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

3.7 ハングアップ(フリーズ)した場合

Javaプロセスが残っていてもプログラムが無応答になった場合、考えられる原因を説明します。

想定される原因:デッドロック

デッドロックが発生した場合、そのスレッドが停止されます。

ハングアップしたときに、スレッドダンプを採取して、デッドロックがないかどうかを確認してください。

スレッドダンプの詳細は、"3.2 スレッドダンプ"を参照してください。

想定される原因:ガーベジコレクション

ガーベジコレクションが発生すると、ガーベジコレクションが終了するまでの間、Javaアプリケーションのすべてのスレッドが停止されます。

これにより、Javaアプリケーションがハングアップしたかのように見える場合があります。

ガーベジコレクションのログを採取して、ガーベジコレクションが動作したタイミングを照合してください。ガーベジコレクションが原因で無応答のような現象になる場合は、Javaヒープをチューニングして、ガーベジコレクションの動作具合を改善してください。

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

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

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

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