堆转储快照文件分析工具MAT使用

背景

我们知道jmap命令可以生成对转储快照文件,那么如何分析呢?除了jdk自带的工具(不好用,看不出来东西)
下面介绍eclipse的memory analyze tool(mat)的使用
mat可以独立于开发工具使用,是个比较方便不错的内存分析工具。

下载

下载地址:https://eclipse.org/mat/downloads.php
选择适合自己的版本,笔者选择的是mac osx版本。

使用

下载完成后是个zip包,解压后出现一个应用程序:
堆转储快照文件分析工具MAT使用_第1张图片
但是这样事不能直接打开的:
堆转储快照文件分析工具MAT使用_第2张图片

解决方式:显示包内容->contents->MacOS ,找到MemoryAnalyzer命令。
打开终端,进入到此目录下执行:./MemoryAnalyzer -data ./dump
即可成功启动。
堆转储快照文件分析工具MAT使用_第3张图片
选择 open a heap dump,打开一个dump文件进行分析
如果出现如下错误:
堆转储快照文件分析工具MAT使用_第4张图片
修改 contents/Eclipse/MemoryAnalyzer.ini 文件的
-Xmx 属性,如下:
堆转储快照文件分析工具MAT使用_第5张图片
保存后重新启动mat。

分析成功后如下:
堆转储快照文件分析工具MAT使用_第6张图片
下面有一行 leak suspects(泄漏疑点)
堆转储快照文件分析工具MAT使用_第7张图片
点击进入leak suspects查看:
堆转储快照文件分析工具MAT使用_第8张图片
这里明确指出了事哪个线程,占用了多少内存。
进入堆栈去看看详细信息:
堆转储快照文件分析工具MAT使用_第9张图片
这里指出了具体哪个类的哪个方法以及具体行数,这样就定位出了内存泄漏的具体信息了。

你可能感兴趣的:(java,JVM,JVM)