В настоящее время я тестирую кластерное приложение, которое работает в JBoss 5.1, с JDK 1.6.0_45, и я испытываю прерывистые сбои JVM. Из отчета об ошибке (более подробная информация из отчета ниже) кажется, что пространство эдена заполнено (100%) во время сбоя, поэтому я подозреваю, что это наиболее вероятный кандидат.Прерывистая авария JVM под нагрузкой
У меня поэтому был запущен JVisualVM, чтобы искать утечки памяти, в частности, отслеживать мои собственные классы. Я вижу, как эти классы растут в памяти, но затем они периодически очищаются сборщиком мусора.
Даже если бы произошла утечка памяти, я бы ожидал увидеть ошибки OutOfMemory до полного сбоя JVM в любом случае. Может ли кто-нибудь помочь указать мне в правильном направлении, где может возникнуть проблема? Любое руководство будет очень высоко оценено.
#
# 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
Ошибка JVM - это редко проблема с кодом. Вероятно, вы столкнулись с ошибкой при реализации JVM. Из отчета, похоже, что GC пытается запустить, но по какой-то причине он сбивает VM. Некоторые вещи, которые следует попробовать: - Запуск на 64-битной JVM с -Xmx4G? - Можете ли вы попробовать не использовать -Xms2G? Если вы установите для Xms и Xmx флаги одинаковое значение, куча не имеет места для роста. Вы можете попробовать без флажков Xms и Xmx – PowerPanda