MAT分析DUMP文件
如何在jvm启动脚本中添加内存溢出自动dump的内容就不赘述了。
今天就只关注dump下来的文件如何进行分析,如何找到是哪一块代码出现了问题。
使用的工具是MAT
第一步:使用MAT打开dump文件
第二部:点击Dominator Tree
可以看到内存占用比较高的线程有2个
第三部:选中需要查看的线程,查看stack
第四部:此时显示的就是发生堆栈溢出时的栈信息,并且有占用大小,就能找到对应的代码位置,未截图的部分就是项目中的代码位置了
另外还可以查看集合中的元素值,也是在dominator_tree中,选中需要查看的集合
下图中模糊位置就是key和value的值
如果想快速的查看stack,还有另外一个方式,Leak Suspects,生成分析报告
然后会出现如下画面,点击See stacktrace就可以查看了
总结:
MAT功能很多,根据不同的场景,使用不同的功能。