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集合等等。

相关推荐
Tingjct10 小时前
线程详细讲解---聚焦linux
linux·服务器·jvm
myy-learn10 小时前
32 SQLITE数据库
jvm·数据库·sqlite
wuminyu13 小时前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++
郝学胜-神的一滴13 小时前
C++11 工程级应用 08:Lambda表达式与Tuple元组
开发语言·jvm·c++·python·程序人生·开源
袋鼠云数栈1 天前
整库迁移与分库分表同步:批量数据搬迁的配置简化思路
jvm·数据库·oracle
Mr. zhihao1 天前
JVM 偏向锁 4 秒延迟:从源码动机到 JEP-374 废弃全链路
jvm·并发·偏向锁
孙克旭_1 天前
JVM 入门详解:JVM、JRE、JDK 区别,JVM 基础结构梳理
java·开发语言·jvm
随遇而安zx1 天前
【地基篇】---JVM 内存结构知识点(Java 8 运行时数据区深度解析)
java·开发语言·jvm
恒拓高科WorkPlus2 天前
企业如何搭建安全内部通讯平台|企业内部通讯平台怎么选才更安全?
jvm·数据库·安全
随遇而安zx2 天前
【地基篇】---JVM 类加载 源码解析(基于 Java 8)
java·jvm·python