Intro OmitStackTraceInFastThrow

Intro OmitStackTraceInFastThrow

Intro OmitStackTraceInFastThrow

Intro OmitStackTraceInFastThrow

在正式環境只看到java.lang.NullPointerException,但往前追查
有些error log卻是完整的stackTrace error log。

原因是JVM有一個參數OmitStackTraceInFastThrow,意思是省略異常棧訊息而快速拋出。
JVM對一些特定的異常類型做了Fast Throw優化,因為不需要在Heap分配Memory。
目前只針對以下異常做Fast Throw
NullPointerException
ArithmeticException
ArrayIndexOutOfBoundsException
ArrayStoreException
ClassCastException

這個參數在open jdk21預設是關閉,可以在setenv.sh加入-XX:-OmitStackTraceInFastThrow
JVM啟動參數來開啟。