我在 WebSphere 7.0 上运行我的 Web 应用程序。它工作了一段时间,但 JVM 崩溃并生成核心转储。从 javacore*** 文件:
0SECTION TITLE subcomponent dump routine
NULL ===============================
1TISIGINFO Dump Event "gpf" (00002000) received
1TIDATETIME Date: 2013/02/23 at 14:40:01
1TIFILENAME Javacore filename: C:\IBM\WebSphere\AppServer\profiles\AppSrv01\javacore.20130223.143538.4904.0002.txt
1TIREQFLAGS Request Flags: 0x81 (exclusive+preempt)
1TIPREPSTATE Prep State: 0x0
1TIPREPINFO Exclusive VM access not taken: data may not be consistent across javacore sections
NULL ------------------------------------------------------------------------
0SECTION GPINFO subcomponent dump routine
NULL ================================
2XHOSLEVEL OS Level : Windows 7 6.1 build 7600
2XHCPUS Processors -
3XHCPUARCH Architecture : amd64
3XHNUMCPUS How Many : 8
3XHNUMASUP NUMA is either not supported or has been disabled by user
NULL
1XHEXCPCODE Windows_ExceptionCode: C0000005
1XHEXCPCODE J9Generic_Signal: 00000004
1XHEXCPCODE ExceptionAddress: 000007FFFF15FD10
1XHEXCPCODE ContextFlags: 0010001F
1XHEXCPCODE Handler1: 000007FFFF67D3C0
1XHEXCPCODE Handler2: 000007FFFF64DE40
NULL
1XHEXCPMODULE Module: C:\IBM\WebSphere\AppServer\java\jre\bin\compressedrefs\j9jit24.dll
1XHEXCPMODULE Module_base_address: 000007FFFEE90000
1XHEXCPMODULE Offset_in_DLL: 00000000002CFD10
NULL
1XHREGISTERS Registers:
2XHREGISTER RDI: 000000001DC12538
2XHREGISTER RSI: 000000002DC043FC
2XHREGISTER RAX: 0000000000000040
2XHREGISTER RBX: 0000000000000000
2XHREGISTER RCX: 000000000000000B
2XHREGISTER RDX: 000000002DC043FC
2XHREGISTER R8: 000000001DC12538
2XHREGISTER R9: 000000000C8FDD84
2XHREGISTER R10: 0000000000000029
2XHREGISTER R11: 0000000000000029
2XHREGISTER R12: 000000001DC12538
2XHREGISTER R13: 00000000FFFFFFFF
2XHREGISTER R14: 000000001DC08FB0
2XHREGISTER R15: 000000002DC0785C
2XHREGISTER XMM0: 000000000000027F
2XHREGISTER XMM1: 0000000000000000
2XHREGISTER XMM2: 0000000000000000
2XHREGISTER XMM3: 0000000000000000
2XHREGISTER XMM4: 0000000000000000
2XHREGISTER XMM5: 0000000000000000
2XHREGISTER XMM6: 0000000000000000
2XHREGISTER XMM7: 0000000000000000
2XHREGISTER XMM8: 0000000000000000
2XHREGISTER XMM9: 0000000000000000
2XHREGISTER XMM10: 408AE8003A356A1F
2XHREGISTER XMM11: 3FC3333344B4A000
2XHREGISTER XMM12: 0000000000000000
2XHREGISTER XMM13: 0000000000000000
2XHREGISTER XMM14: 0000000000000000
2XHREGISTER XMM15: 0000000000000000
2XHREGISTER RIP: 000007FFFF15FD10
2XHREGISTER RSP: 000000000C8FDD00
2XHREGISTER RBP: 00000000320C6A18
2XHREGISTER GS: 002B
2XHREGISTER FS: 0053
2XHREGISTER ES: 002B
2XHREGISTER DS: 002B
1XHEXCPMODULE Compiling method: java/util/Arrays.sort(II[J)V
NULL
1XHFLAGS VM flags:00000000000519FF
NULL
NULL ------------------------------------------------------------------------
0SECTION ENVINFO subcomponent dump routine
NULL =================================
1CIJAVAVERSION JRE 1.6.0 IBM J9 2.4 Windows 7 amd64-64 build jvmwa6460sr9-20101209_70480
1CIVMVERSION VM build 20101209_070480
1CIJITVERSION JIT enabled, AOT enabled - r9_20101028_17488ifx3
1CIGCVERSION GC - 20101027_AA_CMPRSS
1CIRUNNINGAS Running as a standalone JVM
在 Arrays.sort() 方法的 JIT 编译期间,JVM 似乎崩溃了。我不知道,为什么会发生。我尝试了 -Xjit:exclude{...} 并解决了问题,但在这种情况下我对性能不满意..
我将 Arrays.sort() 归咎于 IBM 的 JVM 并以与 Oracle 的 JVM(复制粘贴代码)中实现的方式完全相同的方式实现了我自己的排序,并暂时忘记了这个问题。但是昨天 JVM 在同一任务中再次崩溃。新的 javacore 文件的唯一区别是
1XHEXCPMODULE Compiling method: com/sort/util/SortUtils.sort([JII)V
其中 SortUtils.sort 是我的新实现。
请解释一下,是 JIT 编译器的错误还是我做错了什么?有什么建议可以解决吗?会不会是硬件相关的问题?