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

Eclipse Memory Analyzer

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

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

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

下载MAT

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

使用MAT的命令行工具分析hprof文件_第1张图片

选择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页面即可看到结果。

这里写图片描述

你可能感兴趣的:(编程基础,移动应用JAVA后台开发)