双语网站管理系统,wordpress站点管理,网络设计实践课程报告,百度权重是怎么来的MAT 简介 MAT全称为 Eclipse Memory Analyzer Tool #xff0c;eclipse基金会开源的java堆内存分析工具#xff0c;可以快速的进行堆内存分析、大对象可视化、类加载器分析、线程分析等。在我们碰到线上内存问题时候#xff0c;是不可多得的好工具#xff08;当然也有artha… MAT 简介 MAT全称为 Eclipse Memory Analyzer Tool eclipse基金会开源的java堆内存分析工具可以快速的进行堆内存分析、大对象可视化、类加载器分析、线程分析等。在我们碰到线上内存问题时候是不可多得的好工具当然也有arthas等国产的好工具 XD 安装 建议下载独立安装版 进入mat的下载页面 https://eclipse.dev/mat/downloads.php下载后解压即可 手把手案例 创建一个项目,新建测试类 /*** ** Created : 2023/9/10 14:42* Compiler : jdk 17* Author : VINO* Copyright : VINO* Decription :* */
public class Product {private String name;private String brand;public String getName() {return name;}public void setName(String name) {this.name name;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand brand;}
} main方法测试类
/*** ** Created : 2023/9/10 14:41* Compiler : jdk 17* Author : VINO* Copyright : VINO* Decription : 测试启动类* */
public class MockMemExample {/*** 模拟无限增长的内存* param args*/public static void main(String[] args) {ListProduct productsnew ArrayList();while(true){Product product new Product();product.setBrand(a);product.setName(b);products.add(product);}}
}添加jvm参数 -Xms24m -Xmx24m -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathD:heapdump.hprof jvm参数介绍 -Xms24m 堆内存最小为24M -Xmx24m 堆内存最大为24M -XX:HeapDumpOnOutOfMemoryError 内存溢出时候自动生成堆内存快照文件其中**-XX** 表示该参数是非Stable的参数 -XX:HeapDumpPathD:heapdump.hprof 指定堆内存快照文件生成位置 进行测试 当运行MockExample的测试方法时报出 Java heap space OOM错误 这表示列表存储的对象大小超了堆内存设置众所周知对象和数组是使用的堆内存。 -去看相应的堆内存快照文件也生成了。 打开MAT,将快照文件导入到MAT中File-Open Heap Dump… 选择 Leak Suspect Report 注意这里的 Retained size 和 Shallow Size Retained size 当对象被GC后能够释放的所有内存大小从图上可以看到 可释放内存为14.4MB Shallow Size对象自身所占用的内存大小 对象自身所占用的内存大小 点击Histogram 可以看到每个类的实例数量及占用内存大小 可以看到Product类的内存占用比最高右击 Product这个类点选 List Objects 可以看到有income和outcome 两个下拉选项
ListObjects 可以查看对象的引用关系
其中 with outgoing references 本对象引用了哪些外部对象 with incoming references 查看该对象被哪些外部对象引用了
Leak Suspect Report 报表则提供了 最大可能导致内存溢出的原因 可以看到是一个List容器装载的问题
点击 stacktrace可以看到堆栈信息 MAT的使用介绍就到这里了。
SpringBoot Learning系列 是笔者总结整理的一个SpringBoot学习集合。可以说算是一个SpringBoot学习的大集合。欢迎Star关注。谢谢观看。 关注公众号不迷路