如果发生了内存泄露,如果好重现,使用JVisualvm,或者jmap,Jprofiler进行Heap Dump,使用MAT进行分析。但不好重现的话,可以打开JVM的HeapDumpOnOutOfMemoryError参数,待到有了Heap Dump再使用MAT等工具分析。
说明:
通过jvm参数-XX:+HeapDumpOnOutOfMemoryError可以让JVM在出现内存溢出时候Dump出当前的内存转储快照。快照格式为java_pid2821.hprof(2821为Java进程号)
参数设置:
-XX:+HeapDumpOnOutOfMemoryError :当内存溢出时触发: Java heap space
-XX:HeapDumpPath=/opt/heap·: 内存溢出时,保存内存快照文件
例子:
nohup java -jar -server -Xms8g -Xmx8g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/ ./ >/dev/null 2>
VisualVm和MAT