Java记一次线上内存溢出实战分析

Java记一次线上内存溢出实战分析

1.准备工具

下载插件: MemoryAnalyzer-1.9.2.20200115-win32.win32.x86_64.zip

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

下载后解压:

Java记一次线上内存溢出实战分析

双击 MemoryAnalyzer.exe 打开面板

Java记一次线上内存溢出实战分析

点击 Leak Suspects 进入疑似泄露点视图

Java记一次线上内存溢出实战分析

疑似问题1 (Problem Suspect 1)该TDSPacket对象类型占用了300多M,占用了总内存22.36%,这么大的内存占用率,很有可能导致内存异常

点击 Details 进入第一个疑似点

Java记一次线上内存溢出实战分析
Java记一次线上内存溢出实战分析

单击该行,单击 Java Basics,单击 Thread Details

Java记一次线上内存溢出实战分析

进入到线程栈信息,红框中的是项目的业务类,到这一步根据根据方法的功能,基本就能推断出内存泄漏的原因了。

本例是一个导出execl 的功能,没有现在好导出内容大小,导致内存溢出