分析工具: MAT
一、准备工作
1、修改tomcat/bin 中的文件:
#重启启动,tomcat
启动命令:./startup.sh && tail -f ../logs/catalina.out
启动后, 当内存不足等异常情况, 会先生成文件heapdump.hprof, 后期根据该文件分析程序哪里出现问题。
2、使用MAT 工具分析文件heapdump.hprof
1)从mat 官网下载软件包:MemoryAnalyzer-1.10.0.20200225-linux.gtk.x86_64.zip
2)解压: unzip MemoryAnalyzer-1.10.0.20200225-linux.gtk.x86_64.zip -d /tmp
解压后的文件:
[ssss@11111 mat]$ ll
总用量 148
drwxrwxr-x 6 ssss ssss 4096 12月 29 14:30 configuration
-rw-rw-r-- 1 sss ssss 16863 2月 25 2020 epl-v10.html
drwxrwxr-x 18 ssss ssss 4096 3月 25 2020 features
-rwxr-xr-x 1 ssss ssss 73064 3月 25 2020 MemoryAnalyzer
-rw-rw-r-- 1 ssss ssss 200 12月 29 13:37 MemoryAnalyzer.ini
-rw-rw-r-- 1 ssss apps 9013 2月 25 2020 notice.html
drwxrwxr-x 4 ssss ssss 4096 3月 25 2020 p2
-rwxr-xr-x 1 ssss ssss 333 2月 25 2020 ParseHeapDump.sh
drwxrwxr-x 5 ssss ssss 20480 3月 25 2020 plugins
drwxrwxr-x 3 ssss ssss 4096 12月 29 13:38 workspace
调用命令:ParseHeapDump.sh
执行如下命令会输出泄漏嫌疑对象的分析结果,这个结果是比较全面的。
./ParseHeapDump.sh ../today_heap_dump/jvm.hprof org.eclipse.mat.api:suspects
还支持另外两个分析结果:
org.eclipse.mat.api:overview
org.eclipse.mat.api:top_components
[apps@m1111 mat]$ ./ParseHeapDump.sh /apps/tmp/A20211229-1124heapdump.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
分析后生成文件:
主要是这几个文件:
A20211229-1124heapdump_Leak_Suspects.zip
A20211229-1124heapdump_System_Overview.zip
A20211229-1124heapdump_Top_Components.zip
unzip 解压这几个文件:
-rw-rw-r-- 1 dq dq 83242 12月 29 14:49 A20211229-1124heapdump_Leak_Suspects.zip
-rw-rw-r-- 1 dq dq 65077 12月 29 14:49 A20211229-1124heapdump_System_Overview.zip
-rw-rw-r-- 1 dq dq 229727 12月 29 14:50 A20211229-1124heapdump_Top_Components.zip
drwxrwxr-x 5 dq dq 4096 12月 29 15:01 suspects #自己新建的目录 放heapdump_Leak_Suspects.zip文件
drwxrwxr-x 5 dq dq 4096 12月 29 15:08 systemOverview #自己新建的目录,放heapdump_System_Overview.zip的解压文件
drwxrwxr-x 5 dq dq 4096 12月 29 15:09 topComponents #自己新建的目录,放heapdump_Top_Components.zip的解压文件。
# tomcat 对应的路径:
tomcat/webapps/matfile2/suspects
浏览器访问:http://localhost:8080/matfile2/suspects/index.html
可以看到结果页面:
点击:The stacktrace of this Thread is available. See stacktrace.