前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux使用MAT分析dump文件

linux使用MAT分析dump文件

作者头像
林老师带你学编程
发布2020-07-27 10:04:29
10.4K1
发布2020-07-27 10:04:29
举报
文章被收录于专栏:强仔仔

Widows 分析dump文件的工具太多了,而且都是傻瓜式的点点就好了。但是生产上分析dump文件的话,还是linux工具比较方便,因为生产上的dump文件一般都至少是GB级别的,这么大的文件拷贝到本机要耗费很长时间,特别是遇到生产事故的时候,时间=金钱。 更不允许我们把宝贵的拍错时间浪费到网络传输上面。 那么linux有什么好的解析dump工具呢? 如何解析 java dump的文件? 这里比较推荐IBM的eclipse的MAT工具。

运行环境要求

  • linux操作系统
  • JDK8 以上

下载MAT的linux版本

Eclipse的MAT工具下载链接 MAT支持各种操作系统,找到Linux版本下载下来

代码语言:javascript
复制
# 运行uname -m 看一下linux是 x86_64还是 x86的帮助你选择下载那个版本。
uname -m
#x86_64
代码语言:javascript
复制
wget http://eclipse.stu.edu.tw/mat/1.9.0/rcp/MemoryAnalyzer-1.9.0.20190605-linux.gtk.x86_64.zip

解压配置MAT基本参数

代码语言:javascript
复制
unzip MemoryAnalyzer-1.8.0.20180604-linux.gtk.x86_64.zip
## 修改MAT的内存大小, 注意这个大小要根据你dump文件大小来的,如果dump文件是5GB那么 这里最好配>5GB 否则会报MAT内存不足的异常
## 修改MemoryAnalyzer.ini 的 -Xmx6024m 
vi MemoryAnalyzer.ini

jmap dump整个堆

想了解更详细的请看这篇博文望闻问切使用jstack和jmap剖析java进程各种疑难杂症

代码语言:javascript
复制
jmap -dump:format=b,file=jmap.info PID

MAT分析 dump

代码语言:javascript
复制
 ./ParseHeapDump.sh jmap.info  org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components

等待结果....

结果会生产如下三个zip文件,很小可以直接拷贝到本机

代码语言:javascript
复制
jmap_Leak_Suspects.zip
jmap_System_Overview.zip
jmap_Top_Components.zip

查看报告结果

有两种查看报告的方法

  • 直接把zip下载到本地,然后解压用浏览器查看index.html
  • 把zip下载到本地, 用MAT可视化工具解析zip

遇到问题

Unable to initialize GTK+

遇到这个问题的话,是因为ParseHeapDump.sh 里面需要调用GTK的一些东西。解决方法:

代码语言:javascript
复制
vi ParseHeapDump.sh
#注释掉 "$(dirname -- "$0")"/MemoryAnalyzer -consolelog -application org.eclipse.mat.api.parse "$@"这一行
#然后加入下面
#注意plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar要根据你自己本地的文件名做修改调整
java -Xmx4g -Xms4g \
-jar  plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar \
-consoleLog -consolelog -application org.eclipse.mat.api.parse "$@"

然后继续运行

代码语言:javascript
复制
 ./ParseHeapDump.sh jmap.info  org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components

问题解决

MAC 如何使用 mat工具

MAC 版本 Eclipse的MAT工具下载链接 下载加压缩以后

代码语言:javascript
复制
#修改内存大小,默认1G不够用
vi mat.app/Contents/Eclipse/MemoryAnalyzer.ini

运行

代码语言:javascript
复制
sudo  mat.app/Contents/MacOS/MemoryAnalyzer 
## 1、点击最上面的Overview的 tab
## 2、点击最先面的 Open a Head Dump 就可以选择加载dump文件了
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运行环境要求
  • 下载MAT的linux版本
  • 解压配置MAT基本参数
  • jmap dump整个堆
  • MAT分析 dump
  • 等待结果....
  • 查看报告结果
  • 遇到问题
  • MAC 如何使用 mat工具
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档