一 背景
项目上线后出现jvm内存过高的情况,并且运行一段时间后会出现内存溢出。
二 分析
上一篇我们通过将内存快照导入visualvm来查看具体的内存情况,但是遗憾的是并没有发现具体的问题,于是这次选择使用MAT工具来定位问题
- MAT简介
memory analyzer是一个java监控分析工具,作为跨平台的开源工具,您不仅可以用它来分析内存问题,也可以用来监控整个 Java 应用程序的状态和行为。通过读取应用程序运行时由 Java 运行时环境生成的转储文件快照,Memory Analyzer 使您能够分析那些调试代码可能无法发现的复杂问题。
- 安装MAT
下载链接
https://www.eclipse.org/downloads/ 其实他有两种方式一个是直接下载安装包,一个是直接在eclipse中安装插件,由于我没有安装eclipse所以就直接下载了这个安装包,但是出现一个问题,网站只提供最新版本的安装包,没有以前版本,但是最新版本要求运行环境最低是java11,而我本地环境是java8,所以无法运行
所以我又下载了我本机支持的其他版本的MAT。有需要可联系我
下载好不需要安装直接点击直接可以运行 - 启动并装入快照文件
  MAT直接帮助我们分析出可能发生内存泄漏的点,查看第一个  这里有两个参数 Shallow Heap 以及 Retained Head,Shallow Heap就是对象本身的内存,Retained Head为对象及其引用所占用内存的总和
AI 代码解读