主题 Javadump(更常见的名字:javacore) – 2
在 Javadump 的开始处,前三部分为 TITLE、GPINFO 和 ENVINFO 部分。它们提供了有关转储原因的有用信息。
以下示例显示了取自简单的 Java™ 测试程序的部分输出,该程序调用(使用 JNI)外部函数导致了“常规保护故障”(GPF)。
0 SECTION TITLE subcomponent dump routine NULL =============================== 1 TICHARSET ISO8859-1 1 TISIGINFO Dump Event "gpf" (00002000 ) received 1 TIDATETIME Date: 2011 /11 /10 at 16 :48 :06 1 TIFILENAME Javacore filename: /home/test/javacore.20111110 .164801 .5308428 .0002 .txt 1 TIREQFLAGS Request Flags: 0 x81 (exclusive+preempt) 1 TIPREPSTATE Prep State: 0 x100 (trace_disabled) 1 TIPREPINFO Exclusive VM access not taken: data may not be consistent across javacore sections
0 SECTION GPINFO subcomponent dump routine NULL ================================ 2 XHOSLEVEL OS Level : AIX 7 .1 2 XHCPUS Processors - 3 XHCPUARCH Architecture : ppc64 3 XHNUMCPUS How Many : 8 3 XHNUMASUP NUMA is either not supported or has been disabled by user NULL 1 XHEXCPCODE J9Generic_Signal_Number: 00000004 1 XHEXCPCODE Signal_Number: 0000000 B 1 XHEXCPCODE Error_Value: 00000000 1 XHEXCPCODE Signal_Code: 00000033 1 XHEXCPCODE Handler1: 09001000 A0377470 1 XHEXCPCODE Handler2: 09001000 A036DA50 NULL 1 XHEXCPMODULE Module: ./libgpf.a 1 XHEXCPMODULE Module_base_address: 0900000000431100 NULL 1 XHREGISTERS Registers: 2 XHREGISTER R0: 0900000000431360 2 XHREGISTER R1: 0000010010112910 2 XHREGISTER R2: 09001000 A042B468 2 XHREGISTER R3: 0000000000000000 2 XHREGISTER R4: 0000000000000000 2 XHREGISTER R5: 0000010010112 B00 2 XHREGISTER R6: 09001000 A091C0A8 2 XHREGISTER R7: 0000000000000001 2 XHREGISTER R8: 09001000 A037ACE0 .... 2 XHREGISTER FPR0: FFF8000000000008 2 XHREGISTER FPR1: 4020800000000000 2 XHREGISTER FPR2: 0000000000000000 2 XHREGISTER FPR3: C530000000000000 2 XHREGISTER FPR4: 4148000000000000 2 XHREGISTER FPR5: 401 C000000000000 2 XHREGISTER FPR6: 401 C000000000000 2 XHREGISTER FPR7: 0000000000000000 2 XHREGISTER FPR8: 0000000000000000 .... 1 XHFLAGS VM flags:0000000000040000
GPINFO 部分还引用了 vmState,在控制台输出中记录为 VM flags。 vmState 是发生崩溃时 JVM 中出现的特定线程状态。vmState 的值是十六进制数,以 MSSSS 结尾,其中 M 是 SDK 组件,SSSS 是特定于组件的代码。SDK 组件 代码 NONE 0x00000 INTERPRETER 0x10000 GC 0x20000 GROW_STACK 0x30000 JNI 0x40000 JIT_CODEGEN 0x50000 BCVERIFY 0x60000 RTVERIFY 0x70000 SHAREDCLASSES 0x80000
该示例中,vmState 值是 VM flags:0000000000000000,这指示 SDK 外部的代码中发生崩溃。该崩溃在应用程序本机库 gpf.dll 中。
当 vmState 主要组件为 JIT_CODEGEN 时,请参阅信息:JIT 和 AOT 问题确定 。
ENVINFO
显示有关失败的 Java 运行时环境级别的信息,以及有关适当启动 JVM 进程和JVM 环境的命令行的详细信息。
1CIJITMODES 行提供有关 JIT 设置的信息。在先前的发行版中,关于 JIT 和 AOT 设置的一些信息显示在 1CIJITVERSION 行中。
1CIPROCESSID 行显示生成 javacore 的操作系统进程的标识。
NULL ------------------------------------------------------------------------ 0 SECTION ENVINFO subcomponent dump routineNULL ================================= 1 CIJAVAVERSION JRE 1 .7 .0 AIX ppc64-64 build 20111105_94283 (pap6470sr1-20111107_01 (SR1))1 CIVMVERSION VM build R26_JVM_26_20111104_1149_B942181 CIJITVERSION r11_20111031_212551 CIGCVERSION GC - R26_JVM_26_20111007_1455_B921811 CIJITMODES JIT enabled, AOT enabled, FSD disabled, HCR disabled1 CIRUNNINGAS Running as a standalone JVM1 CIPROCESSID Process ID: 14632 (0 x3928)1 CICMDLINE sdk/jre/bin/java gpf1 CIJAVAHOMEDIR Java Home Dir: /home/test/sdk/jre1 CIJAVADLLDIR Java DLL Dir: /home/test/sdk/jre/bin1 CISYSCP Sys Classpath: /home/test/sdk/jre/lib/ppc64/default /jclSC170/vm.jar ....1 CIUSERARGS UserArgs:2 CIUSERARG -Xoptionsfile=/home/chamlain/build/sdk/jre/lib/ppc64/default /options.default 2 CIUSERARG -Xjcl:jclse7b_262 CIUSERARG -Dcom.ibm .oti .vm .bootstrap .library .path =/home/test/sdk/jre/lib/ppc64/default ....2 CIUSERARG -Dsun.boot .library .path =/home/test/sdk/jre/lib/ppc64/default ....2 CIUSERARG -Djava.library .path =/home/test/sdk/jre/lib/ppc64/default ....2 CIUSERARG -Djava.home =/home/test/sdk/jre....
javacore 的 ENVINFO 节包括有关运行 JVM 的操作系统环境的其他信息。该信息包括:
适当的系统限制或用户限制。这些值只出现在 UNIX 平台上。
有效的系统环境变量。
输出结果与以下行类似:
1 CIUSERLIMITS User Limits (in bytes except for NOFILE and NPROC)NULL ------------------------------------------------------------------------ NULL type soft limit hard limit 2 CIUSERLIMIT RLIMIT_AS unlimited unlimited2 CIUSERLIMIT RLIMIT_CORE unlimited unlimited2 CIUSERLIMIT RLIMIT_CPU unlimited unlimited2 CIUSERLIMIT RLIMIT_DATA unlimited unlimited2 CIUSERLIMIT RLIMIT_FSIZE unlimited unlimited.... 1 CIENVVARS Environment VariablesNULL ------------------------------------------------------------------------ 2 CIENVVAR _=../build/sdk/jre/bin/java2 CIENVVAR LANG=fr_FR2 CIENVVAR LOGIN=test2 CIENVVAR SSH_TTY=/dev/pts/0 2 CIENVVAR CLCMD_PASSTHRU=1 2 CIENVVAR PATH=/usr/java6/bin:/usr/java6/jre/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb....2 CIENVVAR LC__FASTMSG=true2 CIENVVAR LOGNAME=test2 CIENVVAR MAIL=/usr/spool/mail/test2 CIENVVAR LOCPATH=/usr/lib/nls/loc....