什么是MAT?MAT(MemoryAnalyzerTool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA堆分析工具,可以帮助我们发现内存泄漏,降低内存消耗。使用内存分析工具从众多的对象中进行分析,快速计算出对象在内存中的大小,看看是谁在阻止垃圾回收器回收,并且可以通过报表对象直观的查看可能的结果。下载:https://www.eclipse.org/mat/d...根据自己的电脑选择下载环境:我的windows,直接用windows展开下载,直接解压得到mat文件。解压内容如下:双击启动MAT如果内存分析工具报jdk错误:Youneedtodownloadthejdk11package,下载并解压即可,不需要更改电脑的环境配置下载jdk11后,编辑文件添加内容。vmD:\java11\jdk-11.0.17\bin\javaw.exe如图:-Xmx可以调大一些,我调到4024m,因为导入的dump文件过大时会解析错误。重新打开MAT,导入dump文件后,首页截图如下。按钮介绍::直方图视图,统计堆中所有的内存消耗,如图::内存使用树形结构,以线程为维度,以树形展开,如图:线程占用1.1G内存,通过显示线程可以找到慢sql线程栈,可以定位sql在代码中的具体执行位置。截图如下:根据图可以清楚heap的总大小为1.6G,被4个线程占满,导致其他线程无法再申请资源,而一个heap抛出内存溢出错误。通常的做法是直接到线程栈中直接定位到具体抛出错误的代码位置
