MAT分析

MAT全称为Memory Analzyer Tool,即一个Java Heaper分析器,可以用来分析内存泄露和减少内存消耗,它是eclipse的一个插件,可独立运行,具体分析步骤:

1.        工具下载,下载地址:https://www.eclipse.org/mat/downloads.php;根据不同的操作系统选择不同的版本下载安装;

2.        打印dump日志信息:使用jmap命令打印dump日志,命令参数及格式如下:

jmap -dump:format=b,file=heap.bin <pid>

format参数为文件格式,此处b表示为二进制;file为文件名称,pid为当前jvm进程号;

在自动部署系统中可以用过“JVM统计监测工具”打印dump日志;



1.        MAT参数调整:jmap-dump命令产生的二进制文件大小与系统JVM的堆内存配置有关,一般生产环境上的堆内存-xms、-xmx等参数设置比较大,如2G/4G/8G不等,所以在利用MAT打开jmap文件时也需要很大的内存空间,可以修改安装目录下的MemoryAnalyzer.ini配置文件中的-xmx来进行调整;

一般改配置文件格式如下:

-startup

plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar

--launcher.library

plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20140603-1326

-vmargs

-Xmx5500m

        如果MAT内存不足,在打开jmap文件时会报错,具体信息为:

        An internal erroroccurred during: "Parsing heap dump from “\*\*\*.log”Java heap space


1.        日志文件分析:打开MAT,点击界面左上角的“File à Open Heap Dump”,选择二进制dump日志,点击确认后开始进行分析,这个过程可能比较慢,在2G的堆内存配置下,大概需要2~3分钟,待分析完之后会生成很多临时文件,具体情况见下图:




一般如果出现内存泄露,MAT会给出相应的“LeakSuspects”,可以选择“Leaks”查看具体的内存泄露点,新窗口“leakhunter”下包括Overview、Problem Suspect1等,其中Problem Suspect1~N表示可能存在的几个内存泄露点;




参考文章:http://wensong.iteye.com/blog/1986449 

          http://blog.csdn.net/aaa2832/article/details/19419679 

          http://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html



你可能感兴趣的:(MAT分析)