在客戶一臺機器上出現JVM掛掉的問題,大概是一個月就會發生一次。在JVM自動生成的hs_err文件,看到以下內容.
# A fatal error has been detected by the java Runtime Environment:## EXCEPTION_access_VIOLATION (0xc0000005) at pc=0x000000226b53ea00, pid=3880, tid=3182## JRE version: Java(TM) SE Runtime Environment (8.0_72-b15) (build 1.8.0_72-b15)# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.72-b15 mixed mode windows-amd64 comPRessed oops)# Problematic frame:# V [jvm.dll+0xaea10]## Core dump written. Default location: D:/hs_err_pid3880.mdmp## If you would like to submit a bug report, please visit:# http://bugreport.java.com/bugreport/crash.jsp從hs_err文件中可以看到,好像是在執行垃圾收集的時候報錯的,可能是JVM本身的問題。在網上查找了好久,找到了JDK-8149428(https://bugs.openjdk.java.net/browse/JDK-8149428),由些懷疑是JVM的bug.有同事給Oracle的java研發人員發郵件,對方回復說是java的bug,但由于不能重現,也沒什么好的解決方法,建議我們加內存。加內存我們嘗試過,可客戶不同意,還堅持要我們解決掉這個問題。涉及到JVM底層的bug,直接解決可不容易。經過多次糾結的討論、溝通,由于當前使用的是G1垃圾收集,決定嘗試不使用G1,退回到以前的CMS垃圾收集??蛻羰褂肅MS之后,一個多月沒出現問題,終于得到圓滿解決。團隊的力量就是強大。不過在客戶環境上,什么奇怪的問題都有,這個問題也只是發生在這一個客戶上面。
新聞熱點
疑難解答