Javaアプリケーションで、スタックオーバフローが発生する処理を再実行させたところ、スタックオーバフローが発生しなくなりました。

Interstage Application Serverの技術情報はこちら

Javaアプリケーションで、スタックオーバフローが発生する処理を再実行させたところ、スタックオーバフローが発生しなくなりました。理由を教えてください。
Java VMは、頻繁に実行されるメソッドの実行性能を上げるために、アプリケーション実行中、インタプリタで実行されていた当該メソッドを、自動的に翻訳して生成した機械語に動的に切り換えて実行する場合があります。
この動的翻訳処理により対象メソッドが機械語に切り換えられた場合、使用するスタック量が変わることがあります。
その結果、当該メソッド実行時に使用するスタック量が、インタプリタ実行時に比べ増減する場合があります。
本件の場合、再実行時において、動的翻訳処理により切り換えられた機械語処理が実行され、使用するスタック量が減ったと考えられます。
製品・サービス区分 Interstage
製品・サービス情報
対象製品 Interstage Application Server
バージョン V9, V8, V7, V6, V5
プラットフォーム Windows, Solaris, Linux
アンサー種別 運用/保守
このページの先頭へ