我们的一个开发服务器时不时地崩溃,报告看起来非常相似。我们认为这是由于内存不足,但我们想验证这一点。你们能协助这个过程吗?您可以在下面找到hs_err文件中的相关信息。
谢谢! Yon的
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0x00002b84b6dee37c, pid=4196, tid=1081399616
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_22-b03 mixed mode)
# Problematic frame:
# V [libjvm.so+0x5b437c]
#
--------------- T H R E A D ---------------
Current thread (0x000000005db44970): GCTaskThread [id=4200]
siginfo:si_signo=11, si_errno=0, si_code=128, si_addr=0x0000000000000000
Heap
PSYoungGen total 291968K, used 291760K [0x00002aaada600000, 0x00002aaaec400000, 0x00002aaaec400000)
eden space 291136K, 100% used [0x00002aaada600000,0x00002aaaec250000,0x00002aaaec250000)
from space 832K, 75% used [0x00002aaaec250000,0x00002aaaec2ec288,0x00002aaaec320000)
to space 896K, 21% used [0x00002aaaec320000,0x00002aaaec350000,0x00002aaaec400000)
PSOldGen total 583680K, used 385757K [0x00002aaab6c00000, 0x00002aaada600000, 0x00002aaada600000)
object space 583680K, 66% used [0x00002aaab6c00000,0x00002aaace4b7438,0x00002aaada600000)
PSPermGen total 116736K, used 116682K [0x00002aaaaac00000, 0x00002aaab1e00000, 0x00002aaab6c00000)
object space 116736K, 99% used [0x00002aaaaac00000,0x00002aaab1df2b78,0x00002aaab1e00000)
--------------- S Y S T E M ---------------
OS:CentOS release 5.3 (Final)
uname:Linux 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009 x86_64
libc:glibc 2.5 NPTL 2.5
rlimit: STACK 10240k, CORE 0k, NPROC 16384, NOFILE 99999, AS infinity
load average:22.73 19.62 19.08
CPU:total 4 em64t
Memory: 4k page, physical 2059636k(196532k free), swap 128512k(120972k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (1.5.0_22-b03) for linux-amd64, built on Oct 9 2009 01:32:14 by java_re with gcc 3.2.2 (SuSE Linux)
time: Fri Aug 5 03:57:27 2011
elapsed time: 27420 seconds
答案 0 :(得分:3)
作为解决方法,您可以通过“-XX:PermSize = 256m -XX:MaxPermSize = 256m”来增加perm gen的大小。它不能解决问题,但会延迟崩溃。
或者您可以尝试其他gc政策,例如并发gc。
答案 1 :(得分:1)
内存不足不应导致JVM崩溃。如果是这样,那就是JVM错误,并且JVM错误的唯一真正修复就是升级。
我能想到的唯一可能性是“你的错”:
您的代码或某些第三方库正在使用本机代码库,并且该代码存在错误,
您的JVM安装已经巧妙地损坏,或者
您在该计算机上出现了间歇性硬件故障。
如果您怀疑问题是内存不足,那么启用GC日志记录运行应用程序可能会确认这一点。或者你可以调整堆大小和其他设置,并希望他们修复它。
在某些时候,您将不得不告诉您的客户,您无法再为旧(生命终结)JVM上的安装提供支持。如果这是一个JVM错误(我们怀疑),那么几乎没有机会得到它...除非你/你的客户愿意签署一个BIG支票给Oracle以获得支持。