eclipse MAT jvm内存分析工具

最近在生产上出现了一次oom,服务器一天爆一次,怀疑内存泄露了,

于是使用Eclipse Memory Analysis Tools工具进行查找

1.先获取内存信息文件

查看程序的pid:  jps -l 

转储内存文件 : jmap -dump:live,format=b,file=heap.hprof 1111

live:活动的;b:表示二进制格式;heap.hprof 文件名.hprof文件后缀;

1111:程序pid

2.安装MAT

在eclipse中点击help->Eclipse Marketplace 输入MAT,搜索下载Memory Analyzer


3.导入内存信息文件hprof开始查找

导入前最好建一个文件夹放刚才的.hprof文件,因为导入后会生成很多文件

在eclipse的File->Open File 导入刚才的文件


finish后会有一个报告看


4.开始找问题

看泄露报告提示的问题点击下方的class 查找包含的引用


打开后,红色框class Name可以用正则匹配类名,shallow heap表示对象自身占用的内存大小,

retained heap表示对象直接或者间接引用的对象大小总和 点击可以进行大小排序

然后点击某个实例,右击path to GC Roots->exclue all phantom/weak/soft etc. refecence 查看未能被回收的实例


然后发现出现问题的类,点击进去查看未被释放的类,然后回到代码中修改

我这问题比较明显,比较容易找出。以下链接更全面

参考:内存分析工具 MAT 的使用 - 简书

mat(Eclipse Memory Analyzer tool)之二--heap dump分析 - duanxz - 博客园

https://blog.csdn.net/zhongwen7710/article/details/39213377

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容