其他分享
首页 > 其他分享> > MAT分析器查看jvm dump文件

MAT分析器查看jvm dump文件

作者:互联网

概述

在生产环境中,有时会遇到项目报 OOM 的错误,如果能知道是什么对象导致的,就能提高我们解决该问题的几率。这里,MAT就是分析 JVM 堆内存的常用工具之一。

创建dump文件

分析dump文件

MAT工具下载地址:https://www.eclipse.org/mat/downloads.php

1.运行 MemoryAnalyzer.exe,点击 Open a Heap Dump,选择上一步生成的 dump 文件
在这里插入图片描述

2.分析堆内存

如图所示,提示当前有个数组对象,占用 88.67% 的堆空间
在这里插入图片描述
点击下面的 Details 链接,会跳转到当前问题的详细界面。

如下图所示,可以很清楚的看出 TestA 对象占用了大量的内存,这样就可以针对性地排查代码

在这里插入图片描述
3.Shallow Heap 和 Retained Heap

Shallow Heap:对象自身占用的内存大小,不包括它引用的对象。

Retained Size:当前对象的Shallow Heap + 当前对象直接或间接引用的对象总和,其中要排除被GC Roots引用的对象。等价于GC后能从堆内存释放的空间大小。

在这里插入图片描述

如上图所示:

A 对象的 Retained Heap = A 对象的 Shallow Heap
B 对象的 Retained Heap = B 对象的 Shallow Heap + C 对象的 Shallow Heap

这里 B 对象的 Retained Heap 不包含 D 对象,因为 D 对象被GC Roots直接引用

换一种情况:

在这里插入图片描述
如上图所示,D 对象不再被 GC Roots 直接引用,所以

B 对象的 Retained Heap = B 对象的 Shallow Heap + C 对象的 Shallow Heap + D 对象的 Shallow Heap

标签:Retained,MAT,dump,对象,Shallow,GC,jvm,Heap
来源: https://blog.csdn.net/qq_28834355/article/details/116757721