ページの先頭行へ戻る
Enterprise Application Platform V1.1.0 OpenJDKユーザーズガイド
FUJITSU Software

3.6 プロセスが消滅(異常終了)した場合

何の痕跡も残さずに突然プロセスが消滅した場合に、考えられる原因を説明します。

想定される原因JNI処理の異常

JNI経由でJava以外の言語で開発したネイティブモジュールと連携する際、JNIの使用方法を誤ると、プロセス消滅の原因となります。

このようなときは、"-Xcheck:jni"オプションを指定して、JNI処理でメッセージが出力されないかどうかを確認してください。

JNI処理に誤りがなくても、ネイティブモジュールで異常終了またハングアップが発生すると、Javaアプリケーションのプロセスが消滅する場合があります。例えば、スレッドアンセーフな関数を使用している場合は、注意が必要です。

想定される原因プログラムによる終了

Javaプロセスが、特別なメッセージ出力などがないまま、予想外の状態で終了した場合、原因の1つとして、次のどれかが考えられます。

"2.2 JavaVM終了時のメッセージ出力機能"を参照して、対処してください。

想定される原因スタックオーバーフロー

通常、スタックオーバーフローが発生した場合、java.lang.StackOverflowErrorがスローされ、Windowsエラー報告「Windows Error Reporting(WER)」が検知してユーザーダンプを出力します。

しかし、OSが高負荷状態になったり、スタックオーバーフロー発生時のスタック残量が少なかったりすると、Windowsエラー報告にも制御が渡らないまま、痕跡を残さずにプロセスが消滅することがあります。

したがって、プロセスが消滅した原因が不明な場合は、スタックのサイズを拡張して、現象が改善できるかどうかを確認してください。スタックのサイズを拡張しても改善できない場合は、別の原因を調査してください。

Windowsエラー報告の説明は、"3.3 クラッシュダンプ"を参照してください。

スタックオーバーフローが発生したことを確認できた場合、該当するスタックのサイズをチューニングしてください。

想定される原因:その他