下载
http://eclipse.org/mat/downloads.php
基础手册
概要:
1. 关于overview:
右侧饼状图中包含了占用内存比较大,或者对象数目比较多的对象。点击某一个分片,会有其对应的shallow size, retained size.
左侧 inspector 里面包含了当前对象的一些概述信息,以及当前对象中存储了哪些属性、类信息等

右下侧,是一些常用的分析操作(Action, Report, Step by step)。
2. 关于Histogram:
右键某个object,可以做无数分析操作。
可以精确计算某个对象的retain size: 选中某个类,然后选择计算精确的retain size大小即可

选中某个类的条目,然后可以做很多的事情:

另外可以按照类加载器、包、父类进行汇总

关于 Dominator tree: 展示了heap dump 中 的一些大对象。下一级展示了如果当前节点被回收,会有哪些incoming references 会被回收。支配树可以表明哪些对象使某个对象存活。另外,这棵树可以按照类加载器或者组件或者包去进行汇总,这对于分析来说非常有利。
关于 Path to GC Roots: gc root 是一些被JVM自身管理的存活对象,这些内容包括当前运行的线程对象,调用栈,被类加载器加载的类等等。
Path to gc roots 表明对象之所以不被回收的原因。路径可以协助分析Java内存泄露。内存泄漏是因为程序不再使用这个对象,但是它还在被引用。

关于 The Leak Report: MAT 可以分析heap dump ,然后进行泄露猜测。 比如猜测比较大的对象。详细可以参考 “自动heap dump 分析:轻松发现泄露” 一文。
名词解释
- Shallow size :对象自身占用空间的大小。对于非数组对象主要靠自身属性的数量以及种类; 对于数组主要以依赖数组长度,以及里面存储的元素。
- Retained size : 某个对象被GC,这个过程中所有被回收对象占用内存之和。
- incoming reference: These references have kept the object alive and prevented it from being garbage collected . 两个使用incoming reference的地方: Dominator 和 path to gc root .
- outgoing reference: 当前对象引用了哪些对象。
- GC Roots: 一些堆外可达的对象。GC root满足的条件可以参考参考文件中的链接。
参考文献
讲解shallow size 与 retained size
incoming and outgoing reference
gc root
网友评论