IMLC.ME

Java Heap Dump

jcmd (首选)
jcmd <pid> GC.heap_dump <file-path>
jcmd 12587 GC.heap_dump /tmp/dump.hprof
jmap
jmap -dump:[live],format=b,file=<file-path> <pid>
jmap -dump:live,format=b,file=/tmp/dump.hprof 12587
Heap dump on exit (必选)
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.hprof
Arthas (推荐)

heapdump — Arthas 3.5.0 documentation

jhsdb

jhsdb jstack

Programmatic Way
public static void dumpHeap(String filePath, boolean live) throws IOException {
    MBeanServer server = ManagementFactory.getPlatformMBeanServer();
    HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(
      server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class);
    mxBean.dumpHeap(filePath, live);
}

Analysis

IntelliJ IDEA (推荐)

https://www.jetbrains.com/help/idea/analyze-hprof-memory-snapshots.html

点击 View -> Tool Windows -> Profiler
在弹出的 Profiler 窗口中,点击右侧的 "Open snapshot: jfr or hprof file"

Preview

Preview

eclipse Memory Analyzer (MAT) (推荐)

https://www.eclipse.org/mat/downloads.php

Preview

VisualVM (推荐)

https://visualvm.github.io/index.html

Preview

jstack.review (推荐)

jstack.review - Java Thread Dump Analyzer

jstack.review 是一款完全基于浏览器的分析工具。开源免费、可以离线使用。计算完全由浏览器完成,因此不用担心数据安全问题。如有必要,也可以把代码部署到内网使用。

jhat

jhat is deprecated and removed since jdk 9.

JEP 241: Remove the jhat Tool

GCeasy

https://gceasy.io/

GCeasy 是一款在线、基于网页的 heapdump 分析工具。
免费用户每个月可以分析上传5次文件并分析。每个文件大小不超过 10mb。只支持部分分析图表。而且数据储存在对方服务器。

付费用户支持基于机器学习的输出建议、支持全部图表。

老实说,十分鸡肋。工作的话由于数据安全问题,基本上没机会使用。 免费计划只适合个人或者开源的小项目。 付费计划最便宜也要30美元一个月。老实说、除非天天都要 GC 调优、heapdump 分析,否则完全没有性价比。