java如何dump
如何在Java中生成堆转储(Heap Dump)
使用JVM工具
通过JDK自带的jmap工具可以生成堆转储文件。在命令行中执行以下命令,其中<pid>是Java进程的ID:
jmap -dump:format=b,file=heap.hprof <pid>
生成的heap.hprof文件可以用MAT(Memory Analyzer Tool)等工具分析。

通过JVM参数触发 在启动Java应用时添加以下JVM参数,可以在发生OutOfMemoryError时自动生成堆转储文件:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump.hprof
使用VisualVM或JConsole 通过JDK提供的VisualVM或JConsole工具连接到Java进程后,可以在监控界面找到生成堆转储的选项。VisualVM的“Monitor”标签页提供“Heap Dump”按钮直接生成转储文件。

编程方式触发 在Java代码中可以通过HotSpot Diagnostic MXBean动态生成堆转储文件:
import com.sun.management.HotSpotDiagnosticMXBean;
import javax.management.MBeanServer;
import java.lang.management.ManagementFactory;
public class HeapDumper {
public static void dumpHeap(String filePath) throws Exception {
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(
server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class);
mxBean.dumpHeap(filePath, true);
}
}
注意事项
- 堆转储文件可能较大,确保磁盘有足够空间。
- 生成堆转储会暂停JVM,生产环境需谨慎操作。
- 文件路径需有写入权限,文件名建议包含时间戳避免覆盖。






