Interstage Application Serverにおいて、JDK/JRE 1.3.1を用いてJavaアプリケーションを実行すると、スタックオーバーフローの発生で、Javaプロセスが異常終了しました。

JDK/JRE 1.3.1を用いてJavaアプリケーションを実行すると、スタックオーバーフローの発生で、Javaプロセスが異常終了しました。Javaアプリケーションとして例外を検出せずに異常終了した原因と、対処方法を教えてください。
Javaアプリケーションで使用しているJNI(Java Native Interface)の先のネイティブモジュールにおいて、スタックオーバーフローが発生している可能性があります。その場合は、javaコマンドのオプションに-Xssを指定して、スタックサイズを拡張してください。

また、JDK/JRE 1.3.1を用いてJavaアプリケーションを実行している場合は、JNIを使用していなくても、Javaアプリケーション内で下記の条件が発生すると、動的コンパイラが翻訳した機械命令の中で、スタックオーバーフローが発生する可能性があります。

  • 常駐するループ処理内において、例外が多発した場合
    例.Threadクラスを継承したクラスのrun()メソッドは1回だけ呼び出され、メソッド内でループ処理を持つのが一般的です。そしてrun()メソッドは、通常、常駐しています。もし、Javaアプリケーションの入力データなどに問題があり、そのループ処理内で頻繁に例外を検出していた場合は、この条件に合致する場合があります。


JNIの先のネイティブモジュールでスタックオーバフローが発生していない場合は、Javaアプリケーション内に上記条件と合致する処理がないか確認してください。もし該当処理・条件がある場合は、例外が発生しないようにする処理(例えば事前チェックなど)を組み込み、例外が多発しないようにJavaアプリケーションを修正してください。
なお、該当個所がわからない場合は、javaコマンドのオプションに-Xssを指定して、スタックサイズを拡張してください。

製品・サービス区分 Interstage
製品・サービス情報
対象製品 Interstage Application Server
バージョン V8, V7, V6, V5
プラットフォーム Windows, Solaris, Linux
アンサー種別 運用/保守
このページの先頭へ