jvm-分析工具MAT使用(内存快照分析)

 ## 1.MAT工具的下载和安装

MAT(Memory Analyzer Tool)工具是eclipse的一个插件,使用起来非常方便,尤其是在分析 大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,以及可以很方便的找出对象GC Roots的相关信息,当然最吸引人的还是能够快速为开发人员生成内存泄露报表,方便定位问题和分析问题。

MAT工具的下载地址为: http://www.eclipse.org/mat/downloads.php

MAT插件的下载地址为: http://download.eclipse.org/mat/1.3/update-site

######2.下载下来后运行:


jvm-分析工具MAT使用(内存快照分析)_第1张图片

运行报错:

jvm-分析工具MAT使用(内存快照分析)_第2张图片


失望不???经过分析是jdk路径不对?为啥不对呢?jdk在mat文件夹下没有可以配置的地方,那就是走默认的jdk配置,结果没找到,没有命中目标文件jvm.dll。

那只能是jdk位数的问题了,位数不一样,安装后的jdk目录结构就不一样。

解决方法有两个:

1.下载和你jdk位数匹配的mat工具。

2.更换jdk为64位。

温馨提示:机器位数和jdk位数不配可能有问题,报jvm问题,http://www.2cto.com/kf/201208/151334.html

后续使用MAT内容持续更新~

######MAT工具详解:

   Histogram(直方图)视图:

   dominator_tree(支配树)视图:

        基础概念:

Shallow Heap 和 Retained Heap

Shallow Heap表示对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。

Retained Heap是该对象自己的Shallow Heap,并加上从该对象能直接或间接访问到对象的Shallow Heap之和。换句话说,Retained Heap是该对象GC之后所能回收到内存的总和。









今天分析了一个堆dump:


jvm-分析工具MAT使用(内存快照分析)_第3张图片

以前用jdk自带的jvisualvm.exe工具:

这个工具有什么问题呢?dump上G了就打不开了,类似hashmap看不到具体内容是哪个class的东西~

你可能感兴趣的:(jvm-分析工具MAT使用(内存快照分析))