2013-04-24 2 views
1

В настоящее время я тестирую кластерное приложение, которое работает в 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 
+0

Ошибка JVM - это редко проблема с кодом. Вероятно, вы столкнулись с ошибкой при реализации JVM. Из отчета, похоже, что GC пытается запустить, но по какой-то причине он сбивает VM. Некоторые вещи, которые следует попробовать: - Запуск на 64-битной JVM с -Xmx4G? - Можете ли вы попробовать не использовать -Xms2G? Если вы установите для Xms и Xmx флаги одинаковое значение, куча не имеет места для роста. Вы можете попробовать без флажков Xms и Xmx – PowerPanda

ответ

0

Это, скорее всего, проблема с версией JVM и Эден пространства. Лучше всего, вероятно, уменьшить потоки GC? Попробуйте с

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

Спасибо за предложения, я попробую. – StuartyBoarder