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
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.
GCeasy
GCeasy 是一款在线、基于网页的 heapdump 分析工具。
免费用户每个月可以分析上传5次文件并分析。每个文件大小不超过 10mb。只支持部分分析图表。而且数据储存在对方服务器。
付费用户支持基于机器学习的输出建议、支持全部图表。
老实说,十分鸡肋。工作的话由于数据安全问题,基本上没机会使用。 免费计划只适合个人或者开源的小项目。 付费计划最便宜也要30美元一个月。老实说、除非天天都要 GC 调优、heapdump 分析,否则完全没有性价比。