戯言

つらつらと気づいたことを書いていきます。人狼とか。

例外発生時にスタックトレースが出力されない?


例外発生時に、スタックトレースが出力されないことがあるなあと思って調べていたら、こんなものを発見。

例外が数回なげられると、パフォーマンス向上のために最適化されて、スタックトレースを出力しなくすることがあるらしい。

引用:
The compiler in the server VM now provides correct stack backtraces for all "cold" built-in exceptions. For performance purposes, when such an exception is thrown a few times, the method may be recompiled. After recompilation, the compiler may choose a faster tactic using preallocated exceptions that do not provide a stack trace. To disable completely the use of preallocated exceptions, use this new flag: -XX:-OmitStackTraceInFastThrow.
引用元:www.oracle.com

javaVMの起動オプションに、-XX:-OmitStackTraceInFastThrow をつければ、この機能を無効にできます。

オプションを変更して様子を見てみよう。
関連記事

管理者にだけ表示を許可する