«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему в Java NullPointerExceptions отсутствуют StackTraces?

Почему в Java NullPointerExceptions отсутствуют StackTraces?

Опубликовано 16 ноября 2024 г.
Просматривать:252

Why Are Java NullPointerExceptions Missing StackTraces?

Неспособность перехватить StackTraces в Java NullPointerExceptions без видимых ошибок

В некоторых случаях код Java перехватывает исключение NullPointerException, но не регистрирует StackTrace, оставляя разработчиков в недоумении, поскольку " Отображается java.lang.NullPointerException".

Эта запутанная проблема заставила разработчиков безрезультатно искать решения в Интернете. Однако в ходе дальнейшего расследования было обнаружено, что основная причина кроется в стратегиях оптимизации JVM HotSpot.

Чтобы противодействовать этой оптимизации и восстановить извлечение StackTrace, разработчики должны передать JVM следующий аргумент:

-XX:-OmitStackTraceInFastThrow

Эта оптимизация связана с обработкой JVM повторяющихся исключений, таких как NullPointerExceptions. При первом возникновении JVM регистрирует полную трассировку StackTrace. Однако в частых случаях JVM подавляет ведение журнала StackTrace как по соображениям производительности, так и во избежание чрезмерных записей в журнале.

Подробное объяснение этой реализации можно найти в исходном коде HotSpot JVM, в частности, в файле "graphKit. cpp» файл. Настраивая переменную OmitStackTraceInFastThrow, разработчики могут восстановить видимость трассировки стека и упростить процессы отладки.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3