MAT分析DUMP文件

如何在jvm启动脚本中添加内存溢出自动dump的内容就不赘述了。

今天就只关注dump下来的文件如何进行分析,如何找到是哪一块代码出现了问题。

使用的工具是MAT

第一步:使用MAT打开dump文件

第二部:点击Dominator Tree

MAT分析DUMP文件_第1张图片

可以看到内存占用比较高的线程有2个

MAT分析DUMP文件_第2张图片

第三部:选中需要查看的线程,查看stack

MAT分析DUMP文件_第3张图片

第四部:此时显示的就是发生堆栈溢出时的栈信息,并且有占用大小,就能找到对应的代码位置,未截图的部分就是项目中的代码位置了

MAT分析DUMP文件_第4张图片

另外还可以查看集合中的元素值,也是在dominator_tree中,选中需要查看的集合

MAT分析DUMP文件_第5张图片

下图中模糊位置就是key和value的值

MAT分析DUMP文件_第6张图片

 

如果想快速的查看stack,还有另外一个方式,Leak Suspects,生成分析报告

MAT分析DUMP文件_第7张图片

然后会出现如下画面,点击See stacktrace就可以查看了

MAT分析DUMP文件_第8张图片

MAT分析DUMP文件_第9张图片

 

总结:

MAT功能很多,根据不同的场景,使用不同的功能。

你可能感兴趣的:(Java)