Javadump(更常见的名字:javacore)

主题

Javadump(更常见的名字:javacore)

使用 Javadump

Javadump 生成的文件包含与 JVM 以及在执行期间的某个点捕获的 Java™ 应用程序相关的信息。例如,此信息可能与操作系统、应用程序环境、线程、堆栈、锁定和内存有关。

Javadump 为人类可读,且不包括任何 Java 对象内容或数据,但以下项除外:

  • 带有线程标识和标记的线程名称
  • 带有计数和标记的类装入器名称
  • 类和方法名称
  • 某些堆地址

控制 Javadump 生产的首选方式是在应用程序启动时使用 –Xdump:java: 来启用转储代理程序。请参阅使用转储代理程序。也可以通过使用环境变量来控制 Javadump。请参阅环境变量和 Javadump。在 JVM 意外终止或出现内存不足异常时,缺省代理程序将位于创建 Javadump 的位置。缺省情况下,在 JVM 收到特定信号时,也会触发 Javadump。

Javadump 标记

Javadump 文件包含根据识别标识标题区域划分的几个部分,增强了 Javadump 的可读性。

第一个识别标识如下所示:

NULL           -------------------------------------------------------------
0SECTION ENVINFO subcomponent dump routine
NULL =================================

不同部分包含不同的标记,这使文件更易于进行语法分析,从而执行简单的分析。

同时也可以使用 DTFJ 对 Javadump 进行语法分析,请参阅使用 Diagnostic Tool Framework for Java,了解更多信息。

示例标记 (1CIJAVAVERSION) 如下所示:

1CIJAVAVERSION JRE 1.7.0 AIX ppc64-64 build 20110513_82212 
(pap6470-20110517_01)

常见标记具有以下特点:

  • 标记长度多达 15 个字符(用空格填充)。
  • 第一个数字为嵌套级别(0、1、2 和 3)。嵌套级别可能会被省略,例如级别 2 标记后面可能接着级别 4 标记。
  • 第二、三个数字标识转储部分。主要部分有:
    • CI 命令行解释器
    • CL 类装入器
    • LK 锁定
    • ST 存储(内存管理)
    • TI 标题
    • XE 执行引擎
  • 余下部分是一个唯一的字符串,在之前示例中为 JAVAVERSION。

特殊标记具有以下特点:

  • NULL 标记是指该行目的只是为增强可读性。
  • 每部分都以 0SECTION 标记以及该部分标题开头。

以下是转储开始时一些标记的示例。

NULL           ------------------------------------------------------------------
0SECTION TITLE subcomponent dump routine
NULL ===============================
1TICHARSET ISO8859-1
1TISIGINFO Dump Event "vmstart" (00000001) received
1TIDATETIME Date: 2011/05/17 at 12:04:43
1TIFILENAME Javacore filename: /home/user1/javacore.20110517.120443.172218.0001.txt
1TIREQFLAGS Request Flags: 0x81 (exclusive+preempt)
1TIPREPSTATE Prep State: 0x106 (vm_access+exclusive_vm_access+)
NULL -------------------------------------------------------------------
0SECTION GPINFO subcomponent dump routine
NULL ================================
2XHOSLEVEL OS Level : AIX 7.1
2XHCPUS Processors -
3XHCPUARCH Architecture : ppc64
3XHNUMCPUS How Many : 8
3XHNUMASUP NUMA is either not supported or has been disabled by user