问题排查-jmap和MAT工具

jmap经常使用命令

一、heap
命令:jmap -heap pid
描述:显示Java堆详细信息正则表达式

问题排查-jmap和MAT工具
问题排查-jmap和MAT工具

二、histo[:live]
命令:jmap -histo:live pid
描述:显示堆中对象的统计信息
问题排查-jmap和MAT工具ide

三、dump:<dump-options>
命令:jmap -dump:format=b,file=heapdump.phrof pid
描述:生成堆转储快照dump文件。工具

以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。若是指定了live子选项,堆中只有活动的对象会被转储。3d

问题排查-jmap和MAT工具

利用MAT分析dump文件

打开dump如图:

问题排查-jmap和MAT工具

重要功能

一、Histogram

Histogram,可列出每个类的实例数,支持正则表达式查找,也能够计算出该类全部对象的retained size。orm

问题排查-jmap和MAT工具

Shallow Heap就是对象自己占用内存的大小,不包含其引用的对象内存,实际分析中做用不大。对象

Retained Heap值的计算方式是将RSet(当该对象被回收时那些将被GC回收的对象集合)中的全部对象大小叠加。或者说,由于X被释放,致使其它全部被释放对象(包括被递归释放的)所占的heap大小。blog

一、选择一个Class,右键选择List objects > with incoming references,在新页面会显示经过这个class建立的对象信息。
二、而后再选择一个对象,右键选择Path to GC Roots > ****,一般在排查内存泄漏的时候,咱们会选择exclude all phantom/weak/soft etc.references,意思是查看排除虚引用/弱引用/软引用等的引用链,也就是强引用链。递归

二、Leak Suspects

问题排查-jmap和MAT工具
Leak Suspects 界面提示可能存在内存的泄露。
比方说大对象:
问题排查-jmap和MAT工具内存

经过Details能够查看具体问题的详情!it

相关文章
相关标签/搜索