ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Express チューニングガイド
FUJITSU Software

8.6.3 java.lang.StackOverflowErrorがスローされた場合

  StackOverflowErrorがスローされた場合、スタックオーバーフローが原因です。

  スタックのサイズをチューニングしてください。
  スタックのチューニング方法は、“8.4.2 スタックのチューニング”を参照してください。

  なお、StackOverflowErrorがスローされず、そのままJavaプロセスが異常終了する場合もあります。

  その場合の解析方法については、“8.6.3.1 スタックオーバーフロー検出時のメッセージ出力機能”を参照してください。

8.6.3.1 スタックオーバーフロー検出時のメッセージ出力機能

  Javaプロセスが不当なメモリアクセスにより異常終了した場合の原因の1つとして、スレッドに対するスタックのサイズ不足、すなわちスタックオーバーフローの発生が考えられます。

  FJVMでは、スタックオーバーフローが原因と考えられる不当なメモリアクセスによりJavaプロセスが異常終了した場合、その旨を原因調査情報としてFJVMログへ出力する機能を、「スタックオーバーフロー検出時のメッセージ出力機能」として実装しています。
  FJVMログの見方については、“8.5.8 FJVMログ”を参照してください。

  スタックオーバーフロー発生の原因が、Java APIで生成されたスレッドに対するスタックのサイズにある場合は、“8.4.2 スタックのチューニング”を参照して、Java APIで生成されるスレッドに対するスタックのサイズをチューニングしてください。

検出対象となるスレッド

  本機能でスタックオーバーフローの検出対象となるスレッドは、原則Java APIで生成されたスレッドです。
  次のスレッドは、本機能による検出対象スレッドとはなりません。

注意事項

  スタックオーバーフローが発生しても、OS側からFJVM側の処理へ制御が渡らないことがあります。その場合はFJVMログが出力されません。
  OSの制御処理がワトソン博士へ直接例外制御を渡した場合には、ワトソン博士が出力するログファイルを確認してください。ワトソン博士の説明は、“8.5.9.1 クラッシュダンプ”を参照してください。

  なお、スタックオーバーフロー発生時のスタック残量が少ない場合には、以下の状態でJavaアプリケーションが終了する場合があるので注意してください。