場合によっては、Java コードが NullPointerException をキャッチしても StackTrace のログに失敗し、開発者は「 java.lang.NullPointerException」は
この複雑な問題により、開発者はオンラインで解決策を探しても無駄になっています。しかし、さらなる調査の結果、根本原因は HotSpot JVM の最適化戦略にあることが判明しました。
この最適化に対抗して StackTrace の取得を復元するには、開発者は次の引数を JVM に渡す必要があります:
-XX:-OmitStackTraceInFastThrow
この最適化は、JVM の処理に起因します。 NullPointerExceptions などの反復的な例外。最初の発生時に、JVM は完全な StackTrace をログに記録します。ただし、頻繁に発生する場合、JVM はパフォーマンス上の理由と過剰なログ エントリを避けるために StackTrace ログを抑制します。
この実装の詳細な説明は、HotSpot JVM ソース コード、特に「graphKit」内にあります。 cpp」ファイル。 OmitStackTraceInFastThrow 変数を調整することで、開発者はスタック トレースの可視性を取り戻し、デバッグ プロセスを容易にすることができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3