Linux下快速分析DUMP文件

dump文件传输到本地进行分析, 经常须要大量的等待时间。 使用IBM的eclipse的MAT工具能够直接在服务器上进行快速DUMP分析。php

 

运行环境要求

  • linux操做系统
  • JDK8 以上

下载MAT的linux版本

Eclipse的MAT工具下载连接
MAT支持各类操做系统,找到Linux版本下载下来html

# 运行uname -m 看一下linux是 x86_64仍是 x86的帮助你选择下载那个版本。 uname -m #x86_64 
http://iso.mirrors.ustc.edu.cn/eclipse/mat/1.8/rcp/MemoryAnalyzer-1.8.0.20180604-linux.gtk.x86_64.zip 

解压配置MAT基本参数

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进程各类疑难杂症java

jmap -dump:format=b,file=jmap.info PID 

MAT分析 dump

./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components 

等待结果….

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

jmap_Leak_Suspects.zip jmap_System_Overview.zip jmap_Top_Components.zip 

查看报告结果

有两种查看报告的方法api

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

遇到问题

Unable to initialize GTK+

遇到这个问题的话,是由于ParseHeapDump.sh
里面须要调用GTK的一些东西。解决方法:浏览器

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 "$@" 

而后继续运行服务器

./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components 

问题解决app

MAC 如何使用 mat工具

MAC 版本 Eclipse的MAT工具下载连接
下载加压缩之后eclipse

#修改内存大小,默认1G不够用 vi mat.app/Contents/Eclipse/MemoryAnalyzer.ini 

运行工具

sudo  mat.app/Contents/MacOS/MemoryAnalyzer 
## 一、点击最上面的Overview的 tab ## 二、点击最早面的 Open a Head Dump 就能够选择加载dump文件了

 

转自: http://www.moheqionglin.com/site/blogs/84/detail.html

常常使用, 故记录于此

相关文章
相关标签/搜索