eclipse内存分析工具MAT浅谈(一)

阅读更多
MAT(Memory Analyzer Tool) 是基于heap dumps来进行分析的,所以首先必须通过一定的手段得到JAVA堆的DUMP文件。JDK自带的。JConsole 或者 JMAP都是不错的工具。

准备
(·)下载eclipse3.7
(·)安装MAT插件:http://download.eclipse.org/mat/1.1/update-site/

安装完MAT后,进入MAT的Perspectives视图,通过File >   Open Heap Dump...打开heapDumps文件,就可以看到MAT给出了overview page

eclipse内存分析工具MAT浅谈(一)_第1张图片

在底部的Actions有

(1)histogram
列出了有每个种有多少实例,每种类型的实例集合的 shallow size 和  retained size . shallow size指的是对象所消耗的内存大小,如每个对象引起消耗4个字节,或者8个字节,取决于你的操作系统(32位,还是64位), retained size的概念依赖于Retained set 的概念,Retained set 指的是当对象X被回收时,所有被垃圾回收器移除的对象集合,
Retained size 即是Retained set所保持的内存大小。


eclipse内存分析工具MAT浅谈(一)_第2张图片

当然histogram 不仅可以通过类进行数据组织,还可以通过class loader, packages or superclass .来进行数据的组织。

eclipse内存分析工具MAT浅谈(一)_第3张图片

eclipse内存分析工具MAT浅谈(一)_第4张图片

(2)The Dominator Tree
列出了堆中最大的对象,第二层级的节点表示当被第一层级的节点所引用到的对象,当第一层级对象被回收时,这些对象也将被回收。这个工具可以帮助我们定位对象间的引用情况,垃圾回收时候的引用依赖关系。

eclipse内存分析工具MAT浅谈(一)_第5张图片

(3)Path to GC Roots
被JVM持有的对象,如当前运行的线程对象,被systemclass loader加载的对象被称为GC Roots, 从一个对象到GC Roots的引用链被称为Path to GC Roots, 通过分析Path to GC Roots可以找出JAVA的内存泄露问题,当程序不在访问该对象时仍存在到该对象的引用路径。

eclipse内存分析工具MAT浅谈(一)_第6张图片

eclipse内存分析工具MAT浅谈(一)_第7张图片
  • eclipse内存分析工具MAT浅谈(一)_第8张图片
  • 大小: 82.3 KB
  • eclipse内存分析工具MAT浅谈(一)_第9张图片
  • 大小: 35.7 KB
  • eclipse内存分析工具MAT浅谈(一)_第10张图片
  • 大小: 10.2 KB
  • eclipse内存分析工具MAT浅谈(一)_第11张图片
  • 大小: 116.6 KB
  • eclipse内存分析工具MAT浅谈(一)_第12张图片
  • 大小: 160.2 KB
  • eclipse内存分析工具MAT浅谈(一)_第13张图片
  • 大小: 227.3 KB
  • eclipse内存分析工具MAT浅谈(一)_第14张图片
  • 大小: 59 KB
  • eclipse内存分析工具MAT浅谈(一)_第15张图片
  • 大小: 89 KB
  • 查看图片附件

你可能感兴趣的:(java,eclipse,jvm,memory,analyzer)