Interstage Application Server/Interstage Web Server チューニングガイド
目次 索引 前ページ次ページ

第7章 JDK/JREのチューニング> 7.2 FJVM

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

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

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

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

検出対象となるスレッド

 本機能でスタックオーバーフローの検出対象となるスレッドは、原則Java APIで生成されたスレッドです。
 次のスレッドは、本機能による検出対象スレッドとはなりません。
 スタックオーバフローの検出には、OSの機能を利用しています。ご使用中のOSがWindowsの場合は、上記スレッドの場合であっても、そのスレッドで実行されるJavaメソッドの中から呼び出されたネイティブメソッド内で直接発生したスタックオーバーフローについては、本機能による検出の対象となります。

注意事項

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

RHEL-AS4(IPF)/RHEL5(IPF)における注意事項

 RHEL-AS4(IPF)/RHEL5(IPF)用のネイティブモジュールにおいて、メモリアクセスを伴わない再帰処理(例:スタックポインタの更新処理だけが行われるような再帰処理)でスタックオーバーフローが発生した場合には、OS側からFJVM側の処理へ正しく制御が渡りません。その場合は、スタックオーバーフロー発生を検出することができません。

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED