JVM 故障诊断常用工具之 jmap
该工具可用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。 此外,该工具还可以查看堆内存详细信息、堆内存中的对象统计信息、堆内存中的类加载器统计信息、在F-Queue队列等待Finalizer线程执行finalizer方法的对象。使用格式:jmap [option] <pid>
常用option选项如下所示
-heap
打印heap的概要信息、使用的GC算法、Heap配置以及堆内各个区域的内存使用情况
-histo[:live]
统计当前堆中各个类的实例数量以及所占字节数,:live参数会先触发GC,然后再统计数据
使用 :live 参数命令格式:jmap -histo:live <pid>
-finalizerinfo
打印在F-Queue队列等待Finalizer线程执行finalizer方法的对象
-dump:<dump-options>
该参数用于生成JVM dump文件,然后借助于MAT、IBM-Memory-Analyzer、JProfiler等工具进行内存泄漏分析。其中,
<dump-option>选项有以下选择
live
进行dump内存之前,是否要执行GC,再进行dump,否则直接dump内存
format=b
dump文件格式采用二进制格式
file=<file>
指定dump文件的存放位置
待命令执行完成后,在目录 /home/dev/ 下,可以找得到生成的dump文件
参考文章