作者:喜怒哀乐168_572 | 来源:互联网 | 2023-08-28 19:50
获取dump文件有两种方法1)通过jmap工具生成可以生成任意Java进程的dump文件#先找到PIDps-ef|grepjava#jmap转存快照jmap-dump:for
- 获取dump文件有两种方法
1)通过 jmap 工具生成可以生成任意Java进程的dump文件
# 先找到PID
ps -ef | grep java
# jmap 转存快照
jmap -dump:format=b,file=/opt/dump/test.dump {PID}
2)通过配置JVM启动参数
# 当程序出现OutofMemory时,将会在相应的目录下生成一份dump文件,如果不指定选项HeapDumpPath则在当前目录下生成dump文件-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/dumps
- MAT需要JDK11才能运行
解决办法是,打开MAT的安装目录,有一个配置文件MemoryAnalyzer.ini。打开这个文件,在文件中指定JDK版本即可。新增两行配置:
-vm D:/jdkPath/bin/javaw.exe
- 在使用jvisualvm分析大的dump文件时,堆查器使用的内存不足
修改JAVA_HOME/lib/visualvm/etc/visualvm.conf文件中 visualvm_default_options="-J-client -J-Xms24 -J-Xmx256m",然后重启jvisualVM即可
- MAT修改内存空间
分析堆转储文件需要消耗很多的堆空间,为了保证分析的效率和性能,在有条件的情况下,建议分配给 MAT 尽可能多的内存资源。两种方式分配内存资源给 MAT:
1)修改启动参数 MemoryAnalyzer.exe -vmargs -Xmx4g
2)编辑文件 MemoryAnalyzer.ini 添加 -vmargs – Xmx4g
参考的一些文章:
jvisualvm分析:https://zhuanlan.zhihu.com/p/163774290
MAT定位大对象:https://www.cnblogs.com/rb2010/p/14741674.html
MAT详细:https://blog.csdn.net/Jin_Kwok/article/details/80326088
https://www.jianshu.com/p/82b25cf8cfde