3.2. Java Heap Dumps
Java 堆转储是某一时间点上创建的 JVM 堆的快照。创建和分析堆转储对于诊断和故障排除 Java 应用的问题非常有用。
根据您使用的 JDK,可以通过不同的方法来为 JBoss EAP 进程创建和分析 Java 堆转储。本节介绍 Oracle JDK、OpenJDK 和 IBM JDK 的常用方法。
3.2.1. 创建 Heap Dump
3.2.1.1. OpenJDK 和 Oracle JDK
创建 On-Demand Heap Dump
您可以使用 jcmd
命令为在 OpenJDK 或 Oracle JDK 上运行的 JBoss EAP 创建按需堆转储。
- 确定您要从中创建堆转储的 JVM 进程 ID。
使用以下命令创建堆转储:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow jcmd JAVA_PID GC.heap_dump -all=true FILENAME.hprof
$ jcmd JAVA_PID GC.heap_dump -all=true FILENAME.hprof
这会以 HPROF 格式创建一个堆转储文件,通常位于
EAP_HOME 或
EAP_HOME/bin
中。或者,您可以指定另一个目录的文件路径。
在 OutOfMemoryError 上创建一个 Heap Dump Automatically
您可以使用 -XX:+HeapDumpOnOutOfMemoryError
JVM 选项在抛 出 OutOfMemoryError
异常时自动创建堆转储。
这会以 HPROF 格式创建一个堆转储文件,通常位于 EAP_HOME 或
EAP_HOME/bin
中。或者,您可以使用 -XX:HeapDumpPath=/path/
为堆转储设置自定义路径。如果您使用 -XX:HeapDumpPath
指定文件名,例如 -XX:HeapDumpPath=/path/filename.hprof
,堆转储会相互覆盖。
3.2.1.2. IBM JDK
使用 IBM JDK 时,当抛 出 OutOfMemoryError
时会自动生成堆转储。
IBM JDK 的堆转储保存至 /tmp/
目录中,作为可移植堆转储(PHD)格式文件保存在 /tmp/ 目录中。