标签:间隔 其他 需要 原因 tail com java 报告 对比
1,将堆信息导入到mat中分析,查看index.html
2,加载后首页如下图,在首页上比较有用的是Histogram和Leak Suspects。
Leak Suspects Report(内存泄露报告)
3, 点击Details进入详情页面。在详情页面Shortest Paths To the Accumulation Point表示GC root到内存消耗聚集点的最短路径,如果某个内存消耗聚集点有路径到达GC root,则该内存消耗聚集点不会被当做垃圾被回收。
4, 在All Accumulated Objects by Class列举了该对象所存储的所有内容。
5, 为了找到内存泄露,我获取了两个堆转储文件,两个文件获取时间间隔是一天(因为内存只是小幅度增长,短时间很难发现问题)。对比两个文件的对象,通过对比后的结果可以很方便定位内存泄露。
6, Histogram
Histogram可以列出内存中的对象,对象的个数以及大小。
Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。
Top consumers通过图形列出最大的object。
Leak Suspects通过MA自动分析泄漏的原因。
Histogram
Class Name : 类名称,java类名
Objects : 类的对象的数量,这个对象被创建了多少个
Shallow Heap :一个对象内存的消耗大小,不包含对其他对象的引用
Retained Heap :是shallow Heap的总和,也就是该对象被GC之后所能回收到内存的
注:
MAT提供了一个很贴心的功能,将报告的内容压缩打包到一个zip文件,并放在原始堆转储文件的目录下,一般命名为“xxx_Leak_Suspects.zip”,xxx是dump文件的名字,
如果需要和同事一起分析这个内存问题的话,只需要把这个小小的zip包发给他就可以了,不需要把整个堆文件发给他。
并且整个报告是一个HTML格式的文件,用浏览器就可以轻松打开
标签:间隔 其他 需要 原因 tail com java 报告 对比
原文地址:https://www.cnblogs.com/k8s-pod/p/13976190.html