使用MAT的命令行工具分析hprof文件

Eclipse Memory Analyzer

对于MAT这个专业的内存泄漏分析工具,大家应该都比较熟悉,用起来很方便,只需要打开Eclipse,然后把jmap或者jvm dump出来的文件拖到Eclipse里面,就会自动分析,然后以页面的形式展示出来结果。

在结果里面可以看到内存总体情况、泄漏嫌疑对象、以及所有对象的内存占用情况。这对我们找到内存溢出、内存泄漏的元凶帮助很大。

但是对于生产环境,总会遇到这样的问题,dump出来的文件8g以上,比较大,自己的台式机或者笔记本的内存根本不够用。况且Eclipse启动起来,就占1个G的内存。

下载MAT

以前一般是直接以插件的形式安装到Eclipse里面,其实MAT是可以独立运行的,我们需要到官网下载独立包。

这里写图片描述

选择Linux(x86_64/GTK 2)版本,下载下来,然后到自己的服务器上进行解压,执行:

unzip mat.zip

配置MAT

解压之后,需要修改mat的配置文件,打开MemoryAnalyzer.ini文件,修改-Xmx的值,使大于hprof文件的大小,建议是其2倍大小。

-startup
    plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505
    -vmargs
    -Xms16g
    -Xmx16g

执行分析命令

执行如下命令会输出泄漏嫌疑对象的分析结果,这个结果是比较全面的。

./ParseHeapDump.sh ../today_heap_dump/jvm.hprof org.eclipse.mat.api:suspects

还支持另外两个分析结果:

org.eclipse.mat.api:overview
org.eclipse.mat.api:top_components 

出结果的速度很快,8G的文件,大概10来分钟出结果。

运行后,会生成如下的几个压缩包,解压后打开其中的html页面即可看到结果。

这里写图片描述

发布了141 篇原创文章 · 获赞 140 · 访问量 68万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章