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 创建按需堆转储。

  1. 确定您要从中创建堆转储的 JVM 进程 ID。
  2. 使用以下命令创建堆转储:

    Copy to Clipboard Toggle word wrap
    $ 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,堆转储会相互覆盖。

有关如何将 JVM 选项应用到受管域中的单机服务器或服务器的说明,请参阅 JBoss EAP 配置指南

3.2.1.2. IBM JDK

使用 IBM JDK 时,当抛 出 OutOfMemoryError 时会自动生成堆转储。

IBM JDK 的堆转储保存至 /tmp/ 目录中,作为可移植堆转储(PHD)格式文件保存在 /tmp/ 目录中。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.