文章

JVM内置调优工具

JVM内置调优工具

jdk自带有很多命令来优化应用

Jmap

用来查看内存信息,实例个数以及占用内存大小

jmap -histo 14660 > ./log.txt

打开log.txt,文件内容如下:

  • num::序号
  • instances:实例数量
  • bytes:占用空间大小
  • class name:类名称,[C表示char[],[S表示short[],[I表示int[],[B表示byte[],[[I 表示 int[]

查看堆信息

jmap -heap 14660

堆内存dump

jmap -dump:format=b,file=eureka.hprof 14660

也可以设置内存溢出自动导出dump文件(内存很大的时候,可能会导不出来)

  1. XX:+HeapDumpOnOutOfMemoryError
  2. XX:HeapDumpPath=./ (路径)

示例代码:

可以用jvisualvm命令工具导入该dump文件分析

Jstack

用jstack加进程id查找死锁,见如下示例

“Thread-1”线程名

prio=5 优先级=5

tid=0x000000001fa9e000 线程id

nid=0x2d64 线程对应的本地线程标识nid

java.lang.Thread.State: BLOCKED 线程状态

还可以用jvisualvm自动检测死锁

/+

本文由作者按照 CC BY 4.0 进行授权