JAVA Dump 是当tomcat出现假死状态时,保留当前内存情况下记录二进制文件。使用MAT工具进行分析内存泄漏问题。
第一步: 需要在tomcat的catalina.sh中添加 如下配置
JAVA_OPTS="-Xms8192m -Xmx8192m -XX:PermSize=2048M -XX:MaxNewSize=2048m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=你的文件路径
只要tomcat出现内存泄漏(假死)状态就会保留下内存二进制文件。(当然添加后要重启tomcat)
第二步: 需要下载xxxx.hprof文件,这个可能会很大。
第三步:安装MAT
下载 https://download.youkuaiyun.com/download/cdszdd8/10831451
第四步:导如xxx.hprof文件这个过程比较漫长对了,在使用分析工具之前,一定要找一个比xxxx.hprof文件内存大机器进行分析(我这边分析了一个8G的文件在16G内存的机器上运行分析的)
第五步:导入点击工具file->Open Heap Dump 选择我们到处的.hprof文件(需要等....)
等待完毕后如下图
点击Leak Suspects 
这个是分析出的问题
点击Details如下图
工具定位到线程上
点击线程查看线程情况找出是哪行代码出现的问题
然后在返回上层点击
查看数据返回情况
最后定位到是一个SQL语句由于条件没有控制住导致查询数据800多万数据,都加载到内存占据内存3G多。到此就可以找到问题了。希望对大家有帮助。。
原文:https://blog.youkuaiyun.com/cdszdd8/article/details/84846529
MAT对Java Dump的文件的简单分析
最新推荐文章于 2025-10-17 21:02:57 发布
本文介绍如何在Tomcat出现假死状态时,通过配置JAVADump保留内存快照,使用MAT工具分析并定位内存泄漏问题。通过具体案例展示如何从数百万数据查询引起的内存占用过高问题入手,逐步排查并解决。
649

被折叠的 条评论
为什么被折叠?



