上文中,谈到了windows如何使用MAT分析堆快照,查找内存泄漏?那么在生产上如何分析dump文件呢?
生产上分析dump文件的话,还是linux工具比较方便,因为生产上的dump文件一般都比较大,这么大的文件拷贝到本机要耗费很长时间。
那么linux有什么好的解析dump工具呢? 如何解析 java dump的文件?
本文就来说一下 MAT在Linxu中的用法:
Eclipse的MAT工具下载链接 MAT支持各种操作系统,找到Linux版本下载下来# 运行uname -m 看一下linux是 x86_64还是 x86的帮助你选择下载那个版本。uname -m#x86_64wget http://eclipse.stu.edu.tw/mat/1.9.0/rcp/MemoryAnalyzer-1.9.0.20190605-linux.gtk.x86_64.zip
解压配置MAT基本参数
jmap -dump:format=b,file=jmap.info PID
jmap dump整个堆 在哪个路径下 运行 就会在哪个路径下生成dump文件 PID 为进程号
./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
MAT分析 dump
./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
等待结果....
结果会在与dump文件同路径下 生产如下三个zip文件以及其他非zip文件 这三个zip文件很重要,文件很小可以直接拷贝到本机
![88dffe41e6272694c0ba71a5dfb67115.png](https://i-blog.csdnimg.cn/blog_migrate/95393cb93aa1758328db63cf4f26c5c7.jpeg)
jmap_Leak_Suspects.zipjmap_System_Overview.zipjmap_Top_Components.zip
查看报告结果
有两种查看报告的方法
- 直接把zip下载到本地,然后解压用浏览器查看index.html
- 把zip下载到本地, 用MAT可视化工具解析zip