在Java应用程序中,有几种方法可以强制生成堆转储(heap dump).hprof文件:
1. jmap命令(最常用)
```bash
jmap -dump:format=b,file=filename.hprof
```
2. JVM参数方式
在启动Java程序时添加:
```bash
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/to/dump.hprof
```
3. 程序内代码触发
```java
// 编程方式生成
ManagementFactory.getPlatformMBeanServer().invoke(
new ObjectName("com.sun.management:type=DiagnosticCommand"),
"dumpHeap",
new Object[] { "/path/to/heap.hprof", true },
new String[] { String.class.getName(), boolean.class.getName() }
);
```
4. jcmd命令
```bash
jcmd GC.heap_dump /path/to/heap.hprof
```
推荐使用方法1或4,操作简单直接。