我每隔几天就在java 1.6.0_07上运行Tomcat 6.0.16时遇到以下jvm崩溃。
效果是tomcat立即死亡。
这意味着什么?
An unexpected error has been detected by Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d889bb3, pid=4228, tid=8264
Java VM: Java HotSpot(TM) Client VM (10.0-b23 mixed mode windows-x86)
Problematic frame:
V [jvm.dll+0x19bb3]
If you would like to submit a bug report, please visit:
http://java.sun.com/webapps/bugreport/crash.jsp
--------------- T H R E A D ---------------
Current thread (0x4ca02000): VMThread [stack: 0x4ca90000,0x4cae0000] [id=8264]
siginfo: ExceptionCode=0xc0000005, reading address 0x616c632e
Registers:
EAX=0x4ce789a8, EBX=0x00000005, ECX=0x616c632e, EDX=0x00000000
ESP=0x4cadfc34, EBP=0x04598e70, ESI=0x00000000, EDI=0x4d068800
EIP=0x6d889bb3, EFLAGS=0x00010206
Top of Stack: (sp=0x4cadfc34)
0x4cadfc34: 4d66f034 4d66f034 4ca02428 4ca02420
0x4cadfc44: 00000005 ffffffff 4cadff74 77e61a60
0x4cadfc54: 77e61d48 6d88a32f 00000001 00000000
0x4cadfc64: 00000000 4ce78800 00292cd8 6da2f9df
0x4cadfc74: 4d66f034 00292cd8 4ca02420 00000000
0x4cadfc84: 004ef3fa 00000000 019db1de 4ca02814
0x4cadfc94: 6da2ec71 0000000b 002959d8 00000000
0x4cadfca4: 00000000 00000001 4f23e15b 4ca02428
Instructions: (pc=0x6d889bb3)
0x6d889ba3: d2 33 f6 85 c9 7e 67 8d 9b 00 00 00 00 8b 48 0c
0x6d889bb3: 8b 0c b1 39 29 75 09 8b 51 04 c7 02 00 00 00 00
Stack: [0x4ca90000,0x4cae0000], sp=0x4cadfc34, free space=319k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x19bb3]
VM_Operation (0x4d66f034): RevokeBias, mode: safepoint, requested by thread 0x4ce78800
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x4cf59400 JavaThread "Thread-7" daemon [_thread_blocked, id=6240, stack(0x4d430000,0x4d480000)]
0x4cef7c00 JavaThread "TP-Monitor" daemon [_thread_blocked, id=7080, stack(0x4d6c0000,0x4d710000)]
0x4cd25800 JavaThread "TP-Processor4" daemon [_thread_in_native, id=7660, stack(0x4d670000,0x4d6c0000)]
0x4ce78800 JavaThread "TP-Processor3" daemon [_thread_blocked, id=272, stack(0x4d620000,0x4d670000)]
0x4d068800 JavaThread "TP-Processor2" daemon [_thread_blocked, id=620, stack(0x4d5d0000,0x4d620000)]
0x4d068400 JavaThread "TP-Processor1" daemon [_thread_in_native, id=6132, stack(0x4d580000,0x4d5d0000)]
0x4cf69400 JavaThread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon [_thread_blocked, id=6088, stack(0x4d530000,0x4d580000)]
0x4d13a800 JavaThread "ObjectPoolCleaner" [_thread_blocked, id=5792, stack(0x4d4e0000,0x4d530000)]
0x4d069000 JavaThread "ObjectPoolCleaner" [_thread_blocked, id=9296, stack(0x4d360000,0x4d3b0000)]
0x4d091800 JavaThread "pool-1-thread-1" [_thread_blocked, id=7496, stack(0x4d310000,0x4d360000)]
0x4ca1f800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=9860, stack(0x4cc70000,0x4ccc0000)]
0x4ca1b000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=5880, stack(0x4cc20000,0x4cc70000)]
0x4ca19c00 JavaThread "Attach Listener" daemon [_thread_blocked, id=7064, stack(0x4cbd0000,0x4cc20000)]
0x4ca18c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=756, stack(0x4cb80000,0x4cbd0000)]
0x4ca09800 JavaThread "Finalizer" daemon [_thread_blocked, id=8240, stack(0x4cb30000,0x4cb80000)]
0x4ca05400 JavaThread "Reference Handler" daemon [_thread_blocked, id=7888, stack(0x4cae0000,0x4cb30000)]
0x00296400 JavaThread "main" [_thread_in_native, id=5184, stack(0x00840000,0x00890000)]
Other Threads:
=>0x4ca02000 VMThread [stack: 0x4ca90000,0x4cae0000] [id=8264]
0x4ca2a400 WatcherThread [stack: 0x4ccc0000,0x4cd10000] [id=6520]
VM state:at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x002959a8/0x000006e4] Threads_lock - owner thread: 0x4ca02000
Heap
def new generation total 72576K, used 33231K [0x02910000, 0x077d0000, 0x077d0000)
eden space 64512K, 51% used [0x02910000, 0x04983fa0, 0x06810000)
from space 8064K, 0% used [0x06ff0000, 0x06ff0000, 0x077d0000)
to space 8064K, 0% used [0x06810000, 0x06810000, 0x06ff0000)
tenured generation total 967936K, used 42171K [0x077d0000, 0x42910000, 0x42910000)
the space 967936K, 4% used [0x077d0000, 0x0a0fee10, 0x0a0ff000, 0x42910000)
compacting perm gen total 19456K, used 19349K [0x42910000, 0x43c10000, 0x4a910000)
the space 19456K, 99% used [0x42910000, 0x43bf5460, 0x43bf5600, 0x43c10000)
No shared spaces configured.
Dynamic libraries:
0x00400000 - 0x00423000 C:\platform\software\jdk1.6.0_07\bin\java.exe
0x7c800000 - 0x7c8c2000 C:\WINDOWS\system32\ntdll.dll
0x77e40000 - 0x77f42000 C:\WINDOWS\system32\kernel32.dll
0x7d1e0000 - 0x7d27c000 C:\WINDOWS\system32\ADVAPI32.dll
0x77c50000 - 0x77cef000 C:\WINDOWS\system32\RPCRT4.dll
0x76f50000 - 0x76f63000 C:\WINDOWS\system32\Secur32.dll
0x7c340000 - 0x7c396000 C:\platform\software\jdk1.6.0_07\jre\bin\msvcr71.dll
0x6d870000 - 0x6dac0000 C:\platform\software\jdk1.6.0_07\jre\bin\client\jvm.dll
0x77380000 - 0x77411000 C:\WINDOWS\system32\USER32.dll
0x77c00000 - 0x77c49000 C:\WINDOWS\system32\GDI32.dll
0x76aa0000 - 0x76acd000 C:\WINDOWS\system32\WINMM.dll
0x76290000 - 0x762ad000 C:\WINDOWS\system32\IMM32.DLL
0x6d320000 - 0x6d328000 C:\platform\software\jdk1.6.0_07\jre\bin\hpi.dll
0x76b70000 - 0x76b7b000 C:\WINDOWS\system32\PSAPI.DLL
0x6d820000 - 0x6d82c000 C:\platform\software\jdk1.6.0_07\jre\bin\verify.dll
0x6d3c0000 - 0x6d3df000 C:\platform\software\jdk1.6.0_07\jre\bin\java.dll
0x6d860000 - 0x6d86f000 C:\platform\software\jdk1.6.0_07\jre\bin\zip.dll
0x6d620000 - 0x6d633000 C:\platform\software\jdk1.6.0_07\jre\bin\net.dll
0x71c00000 - 0x71c17000 C:\WINDOWS\system32\WS2_32.dll
0x77ba0000 - 0x77bfa000 C:\WINDOWS\system32\msvcrt.dll
0x71bf0000 - 0x71bf8000 C:\WINDOWS\system32\WS2HELP.dll
0x71b20000 - 0x71b61000 C:\WINDOWS\system32\mswsock.dll
0x5f270000 - 0x5f2ca000 C:\WINDOWS\system32\hnetcfg.dll
0x71ae0000 - 0x71ae8000 C:\WINDOWS\System32\wshtcpip.dll
0x68000000 - 0x68035000 C:\WINDOWS\system32\rsaenh.dll
0x76920000 - 0x769e2000 C:\WINDOWS\system32\USERENV.dll
0x71c40000 - 0x71c97000 C:\WINDOWS\system32\netapi32.dll
0x76ed0000 - 0x76efa000 C:\WINDOWS\system32\DNSAPI.dll
0x76f70000 - 0x76f77000 C:\WINDOWS\System32\winrnr.dll
0x76f10000 - 0x76f3e000 C:\WINDOWS\system32\WLDAP32.dll
0x76f80000 - 0x76f85000 C:\WINDOWS\system32\rasadhlp.dll
0x6d800000 - 0x6d808000 C:\platform\software\jdk1.6.0_07\jre\bin\sunmscapi.dll
0x761b0000 - 0x76243000 C:\WINDOWS\system32\CRYPT32.dll
0x76190000 - 0x761a2000 C:\WINDOWS\system32\MSASN1.dll
VM Arguments:
jvm_args: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=C:\platform\software\apache-tomcat-6.0.16\conf\logging.properties -Xms1024m -Xmx1024m -XX:MaxPermSize=128m -Djava.endorsed.dirs=C:\platform\software\apache-tomcat-6.0.16\endorsed -Dcatalina.base=C:\platform\software\apache-tomcat-6.0.16 -Dcatalina.home=C:\platform\software\apache-tomcat-6.0.16 -Djava.io.tmpdir=C:\platform\software\apache-tomcat-6.0.16\temp
java_command: org.apache.catalina.startup.Bootstrap start
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=C:\platform\software\jdk1.6.0_07
JRE_HOME=C:\platform\software\jdk1.6.0_07
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 26 Stepping 5, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows Server 2003 family Build 3790 Service Pack 2
CPU:total 4 (1 cores per cpu, 1 threads per core) family 6 model 10 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3
Memory: 4k page, physical 2097151k(2097151k free), swap 4194303k(3879608k free)
vm_info: Java HotSpot(TM) Client VM (10.0-b23) for windows-x86 JRE (1.6.0_07-b06), built on Jun 10 2008 01:14:11 by "java_re" with MS VC++ 7.1
time: Mon Aug 09 08:34:32 2010
elapsed time: 34039 seconds
答案 0 :(得分:6)
它基本上与JVM代码中的segfault崩溃。 ExceptionCode = 0xc0000005表示段错误。 JVM线程(tid = 0x4ca02000)尝试写入ECX = 0x616c632e寄存器指向的地址,该寄存器看起来不可访问,并导致段错误。我可以看到基于所提供信息的两个原因,或者是由于访问垃圾收集导致的对象损坏问题或者在Java堆中的压缩(可能是perm区域 - 只是基于堆统计中显示的占用率的猜测)或者可能是由于JIT编译的代码导致对象损坏。首先有点难以弄清楚,因为它需要系统转储分析,但看起来第二个很容易通过使用-Xint选项禁用JIT来检查。你可以尝试这个,如果它解决了问题可能是JIT做得不好。如果最近在JIT中修复了某些内容并且可以升级到最新版本,你可以查看最新版本。
答案 1 :(得分:1)
我会尝试将JVM升级到最新版本。从那时起,已经有很多修复。
答案 2 :(得分:0)
在我的情况下,这是一次内存崩溃。修复了将此参数添加到JVM启动配置:-Xmx512M