JVM内存快照。

生成heap dump

可以在启动的时候添加参数,这样内存溢出的时候自动生成。

  1. -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=log/heap_dump.hprof

方式一:通过jmap命令

  1. jmap -dump:live,format=b,file=heap.hprof <pid>

方式二:通过jconsole

image.png

image.png

通过arthas

image.png

分析

jhat

image.png
访问:
image.png

JProfiler

idea插件:https://plugins.jetbrains.com/plugin/253-jprofiler/versions

因为需要注册码,暂停使用。

Memory Analyzer(推荐)

eclipse工具 Memory Analyzer,提供独立运行程序:https://www.eclipse.org/mat/downloads.php

  • 下载

image.png

  • 打开

JVM heap dump - 图7

分析完成后,dump目录结构:

image.png

通过漏洞分析和线程树,我们可以大致分析出是哪个线程哪个类出现问题。
image.png

Leak Suspects会大致分析出问题出现在哪个类里,点击details可以查看具体对象。
image.png

Dominator tree可以查看具体的大对象内容。
image.png