JVM崩壊

1480 ワード

プログラムはちゃんとしていましたが、大改正をしました。テストの時、ある場面でプログラムが突然消えてしまいました。検査後、JVMが崩壊しました。
 
実行ディレクトリでエラーのlogファイルが生成されました。hs_err_pid 26290.log
 
開けてみたら、いくつかの情報が見えます。インターネットの資料も調べました。
 
JVMの崩壊はネットで探してみましたが、普通以下のような状況が多いです。
 
1.メモリが足りない、特にHeapが足りないため、具体的な例:  http://www.zhuoda.org/hofman/66549.html
 
2.JVMコンパイル時に発生したJVMの崩壊、例えば: 
 http://seanhe.iteye.com/blog/905997 を選択します。 
 http://hi.baidu.com/wzgws/item/60ad0dea9ae6aff6e0a5d476
 
3.GCの時に発生したJVMの崩壊は、このネット上で一番多いです。
 
資料の状況によって、ロゴファイルを分析しました。
 
ロゴファイルの内容にはこれらの部分が含まれています。
        :
JVM crash main information:
1.JVM:(1.5.0_17-b04 mixed mode) 
A fatal error has been detected by the Java Runtime Environment:  
2.SIGSEGV (0xb)  
3.libjvm.so+0x48acf3  
4.Java Threads: ( => current thread )
  ComiplerThread [_thread_in_native] 
5.Current CompileTask:
    com.apusic.net.Muxer.acceptConnection(SocketAdaptor paramSocketAdaptor) 
6.Heap       。

 
Threadによって、問題がどのタイプのスレッドにあるかを判断できます。Heapでメモリ使用の状況を分析できます。
 
自分のロゴを分析しましたが、問題はComplerThread 0でもあります。Java Trouble Shoting Gideの解釈によると(関連部分はhttp://seanhe.iteye.com/blog/905997の中ですでに翻訳を提供しました)、関連している方法を-XX:CommleCommandに調合して、問題は解決されます。
 
 
また、崩壊位置の定義はこのロゴファイルに説明されています。
 
Native frame:(
J=compled Java code、
j=interpreted、
Vv=VMコード、
C=native code
)