是否有解決這種錯誤報告的方式:JDK6有問題的框架:#Ĵjava.util.LinkedHashMap.addEntry(ILjava /郎/對象; Ljava /郎/對象;我)V
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fc955e66998, pid=25851, tid=140467030525696
#
# JRE version: 6.0_37-b06
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.12-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J java.util.LinkedHashMap.addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V
?
崩潰發生頻率很高(每天在Web服務器生產中發生1-2次),幾乎總是出現不同的有問題的幀報告。
下面是一些錯誤報告的例子:
# J java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
# J java.util.LinkedHashMap.addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V
# C [libc.so.6+0x6bb34]
# C [libgobject-2.0.so.0+0x2346f] g_type_check_instance_is_a+0x43
# C [libgobject-2.0.so.0+0x2346f] g_type_check_instance_is_a+0x43
# V [libjvm.so+0x4d3360]
# V [libjvm.so+0x32d166] CardTableRS::write_ref_field_gc_par(void*, oopDesc*)+0x26
# V [libjvm.so+0x7a33e2] ContiguousSpace::prepare_for_compaction(CompactPoint*)+0x242
# V [libjvm.so+0x4d3360]
# V [libjvm.so+0x76943b] ReferenceProcessor::balance_queues(DiscoveredList*)+0x32b
# V [libjvm.so+0x4d3360]
# V [libjvm.so+0x32d166] CardTableRS::write_ref_field_gc_par(void*, oopDesc*)+0x26
# V [libjvm.so+0x4d3360]
# V [libjvm.so+0x4d3360]
# V [libjvm.so+0x76943b] ReferenceProcessor::balance_queues(DiscoveredList*)+0x32b
,這似乎觸發崩潰的唯一的事情是高內存使用率約爲30GB,儘管這並非一直的情況下(有一些崩潰在gc日誌顯示內存使用率低的瞬間)。在-Xint
模式下運行時不會發生崩潰,但該模式非常緩慢,因此不是選項。
似乎很難做出任何簡單的「可複製代碼」來重現複雜應用程序的生產環境中發生的錯誤。
怎麼辦?儘管我在Oracle崩潰網站上報告了一堆這些...
我不懷疑硬件內存問題,因爲沒有其他任何事情崩潰,除了Java。在應用程序中沒有自定義的原生jni代碼。
我們的vm參數是-server -Xss4096k -Xms32255M -Xmx32255M -Xnoclassgc -XX:+UseNUMA -XX:MaxPermSize=512m -XX:+UseGCOverheadLimit -verbose:gc -Xmaxf1 -XX:+UseCompressedOops -XX:+DisableExplicitGC -XX:+AggressiveOpts -XX:+ScavengeBeforeFullGC -XX:CMSFullGCsBeforeCompaction=10 -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:GCTimeRatio=19 -XX:+UseAdaptiveSizePolicy -XX:MaxGCPauseMillis=500 -Xloggc:gc.log
。
應用程序中沒有自定義原生jni代碼。 感謝您的鏈接;生產應用程序將很難調試,因爲它可能會在白天隨機崩潰,然後應立即重新啓動。有沒有類似的窗戶?我可以很容易地崩潰;) – Martin