MAT
MAT
MAT 是一款高性能、具备丰富功能的
Heap Dump
-
对象信息:类名、属性、基础类型和引用类型
-
类信息:类加载器、类名称、超类、静态属性
-
GC Roots: JVM 中的一个定义,进行垃圾收集时,要遍历可达对象的起点节点的集合 -
线程栈和局部变量:快照生成时候的线程调用栈,和每个栈上的局部变量
Garbage Collection Roots
System Class: 由Bootstrap Classloader 加载的类,例如rt.jar ,里面的类的包名都是java.util.*
开头的。
-
Thread Block/Thread: 正在存活的线程,被当前活跃的线程锁引用的对象。 -
Busy Monitor: 调用了wait() 、notify() 或synchronized 关键字修饰的代码——例如synchronized(object) 或synchronized 方法。
-
Java Local:局部变量。例如函数的输入参数、正在运行的线程栈里创建的对象。
-
JNI Local/Global:
native 代码中的局部变量/ 全局变量,例如用户编写的JNI 代码或JVM 内部代码。 -
Native Stack: native 代码的输入或输出参数,例如用户定义的JNI 代码或JVM 的内部代码。在文件/ 网络IO 方法或反射方法的参数。 -
Finalizable/Unfinalized: 在finalize 队列中等待它的finalizer 对象运行的对象;重载了finalize 方法,但是还没有进入finalize 队列中的对象。 -
Java Stack Frame:
Java 栈帧,用于存放局部变量。只在dump 文件被解析的时候会将java stack frame 视为对象。 -
Unknown: 没有Root 类型的对象。有些dump 文件(例如IBM 的Portable Heap Dump )没有Root 信息。
Shallow 与Retained Heap

Dominator Tree
支配树是基于对象的引用关系图建立的,在支配树中每个节点都是它的子节点的直接支配节点。基于支配树可以很清楚得看到对象之间的依赖关系。下图中,
