2013-04-24 127 views
1

我目前正在使用JDK 1.6.0_45加載測試在JBoss 5.1中運行的集羣應用程序,而且我遇到間歇性JVM崩潰。從錯誤報告(下面的報告的進一步細節)看來,崩潰時伊甸園空間已滿(100%),所以我懷疑這是最有可能的候選人。負載下間歇性JVM崩潰

因此,我一直在運行JVisualVM來查找內存泄漏,特別是監視我自己的類。我可以看到這些類在內存中增長,但隨後它們會被垃圾回收器定期清理。

即使存在內存泄漏,我仍然希望在完整的JVM崩潰之前看到OutOfMemory錯誤。任何人都可以幫助我指出問題可能出在哪裏的正確方向嗎?任何指導將非常感激。

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006dba43f7, pid=3980, tid=2556 
# 
# JRE version: 6.0_45-b06 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.45-b01 mixed mode windows-amd64 compressed oops) 
# Problematic frame: 
# V [jvm.dll+0x2c43f7] 
# 
# If you would like to submit a bug report, please visit: 
# http://java.sun.com/webapps/bugreport/crash.jsp 
# 

剪斷

Heap 
PSYoungGen  total 670272K, used 662831K [0x00000007d5560000, 0x0000000800000000, 0x0000000800000000) 
    eden space 641728K, 100% used [0x00000007d5560000,0x00000007fc810000,0x00000007fc810000) 
    from space 28544K, 73% used [0x00000007fc810000,0x00000007fdcabf68,0x00000007fe3f0000) 
    to space 28352K, 12% used [0x00000007fe450000,0x00000007fe7d0e60,0x0000000800000000) 
PSOldGen  total 1398144K, used 1096904K [0x0000000780000000, 0x00000007d5560000, 0x00000007d5560000) 
    object space 1398144K, 78% used [0x0000000780000000,0x00000007c2f32250,0x00000007d5560000) 
PSPermGen  total 422848K, used 378606K [0x0000000760000000, 0x0000000779cf0000, 0x0000000780000000) 
    object space 422848K, 89% used [0x0000000760000000,0x00000007771bb800,0x0000000779cf0000) 

剪斷

VM Arguments: 
jvm_args: -Dprogram.name=run.bat -XX:MaxPermSize=512m -Xms2G -Xmx2G -Dhttp.proxyHost=testproxy -Dhttp.proxyPort=8010 -Dhttps.proxyHost=testproxy -Dhttps.proxyPort=8010 -Djavax.net.ssl.trustStore=cacerts -Djavax.net.ssl.trustStorePassword=changeit -Djavax.net.ssl.keyStore=testkeystore.jks -Djavax.net.ssl.keyStorePassword=testkeystore -Djboss.messaging.ServerPeerID=2 -Dhttp.nonProxyHosts=*.mydomain.com -Dsun.rmi.dgc.client.gcInterval=900000 -Dsun.rmi.dgc.server.gcInterval=900000 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Djava.library.path=C:\jboss-5.1.0.GA\bin\native;C:\Program Files (x86)\Windows Resource Kits\Tools\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\jboss-5.1.0.GA\bin -Djava.endorsed.dirs=C:\jboss-5.1.0.GA\lib\endorsed 
java_command: org.jboss.Main -c hops-cnf -b 0.0.0.0 
Launcher Type: SUN_STANDARD 
+0

JVM崩潰很少是代碼問題 - 您可能遇到了JVM實現中的錯誤。 從報告中看,GC似乎正在嘗試運行,但由於某種原因它會使VM崩潰。有些事情要嘗試: - 使用-Xmx4G在64位JVM上運行? - 你可以嘗試不使用-Xms2G?如果您將Xms和Xmx標誌設置爲相同的值,則堆沒有增長空間。您可以嘗試不使用Xms和Xmx標誌 – PowerPanda 2013-04-24 09:34:26

回答

0

這是最有可能與JVM版本和伊甸園空間的問題。你最好的選擇可能是減少GC線程?嘗試使用

-XX:LargePageSizeInBytes=5m -XX:ParallelGCThreads=1 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 
+0

感謝您的建議,我會試一試。 – StuartyBoarder 2013-04-24 09:58:30