MAT(memory analyzer tool)主要功能

MAT(Memory Analyzer Tool),是一款快速便捷且功能强大丰富的JVM堆内存离线分析工具。其通过展现JVM异常时所记录的运行时堆转储快照(heap dump)状态(正常运行时也可以做堆转储分析),帮助定位内存泄漏问题或优化大内存消耗逻辑。

MAT主要适用场景:

  1. 内存溢出, JVM堆区放不下存活及待申请的对象。如:高峰期系统出现OOM异常,需定位内存瓶颈点来指导优化。

  2. 内存泄漏,不会再使用的对象无法被垃圾回收器回收。如:系统运行一段时间后出现Full GC,直到周期性OOM,最终需人工重启解决。

  3. 内存占用高,内存占用高,影响服务实时性、稳定性、吞吐能力。

  4. CPU高,频繁GC引起CPU极高。

  5. 业务对象分析,比如会话数量分析、大对象分析、循环过多分析等等。

Heap Dump

Heap Dump是Java进程堆内存再一个时间点的快照,通常情况下,快照会包含关于堆中Java对象和类的信息,这些信息是再生成快照时的,所以堆是具有时效性,不同时刻获取的堆内容一般不相同,主要内容如下:

  1. 所有对象的实例信息:对象所属类名、基础类型和引用类型的属性等;

  2. 所有类信息:类加载器、类名、继承关系、静态属性等;

  3. GC Roots:GC Roots代表通过可达性分析来判断JVM对象是否存活的起始集合;

  4. 线程栈及局部变量:快照生成时刻的所有线程的线程栈帧,以及每个线程栈的局部变量。

Shallow Heap

Shallow Heap代表一个对象结构自身所占用的内存大小,如java.util.ArrayList对象的Shallow Heap包含8字节的对象头、8字节的对象数组属性elementData引用、4字节的size属性、4字节的modcount属性,Shallow Heap又叫浅堆。

Retained Set

对象retained set,是指该对象被GC回收后,所有能被回收的对象集合;另外,当该对象无法被GC回收,则其retained set也必须无法被GC回收。

Retained Heap

Retained Heap是一个对象被GC回收后,可释放的内存大小,等于释放对象的Retained Set中所有对象的Shallow Heap的和,Retained Heap又叫深堆。

Dominator Tree

如果所有指向对象Y的路径都经过对象X,则X支配Y。 Dominator Tree是根据对象引用及支配关系生成的整体树状图,支配树清晰描述了对象间的依赖关系,如下图,左边是引用关系,右边是支配树。

OQL

OQL是类似于SQL的MAT专用统一语言,可以根据复杂的查询条件对dump文件中的类或者对象等数据进行筛选。

References

包含outgoing references、incoming references,均反映了对象间直接依赖关系。

  1. outgoing references:对象引用的外部对象(注意不包含对象的基本类型属性)

  2. incoming references:直接引用了当前对象的对象,每个对象的incoming references可能有1到多个。

MAT通用设置

mat自身默认内存为1024M,

mat的默认文件结构

MemoryAnalyzer.ini文件

MAT的主要功能

(1)全局信息

(2)统计Histogram

(3)支配树

(4)OQL查询

(5)线程信息

(6)堆预览、泄漏分析、大对象分析、报告分析

(7)引用关系、GC Roots、Java基础、Java集合等等。

相关推荐
期待のcode5 小时前
Java虚拟机的非堆内存
java·开发语言·jvm
jmxwzy9 小时前
JVM(java虚拟机)
jvm
Maỿbe9 小时前
JVM中的类加载&&Minor GC与Full GC
jvm
人道领域10 小时前
【零基础学java】(等待唤醒机制,线程池补充)
java·开发语言·jvm
小突突突10 小时前
浅谈JVM
jvm
饺子大魔王的男人12 小时前
远程调试总碰壁?局域网成 “绊脚石”?Remote JVM Debug与cpolar的合作让效率飙升
网络·jvm
天“码”行空1 天前
java面向对象的三大特性之一多态
java·开发语言·jvm
独自破碎E1 天前
JVM的内存区域是怎么划分的?
jvm
期待のcode1 天前
认识Java虚拟机
java·开发语言·jvm