Повторяющееся исключение без трассировки стека - как сбросить?
В журнале моего приложения (используя log4j) я вижу исключение NullPointerException, но без трассировки стека. Я знаю, что в качестве оптимизации, когда исключение возникает много раз, jvm перестает производить трассировку стека. Проблема в том, что исключение произошло некоторое время назад, и все мои журналы заполнены исключением без трассировки стека. Есть ли способ "сбросить" этот механизм, чтобы следующее выброшенное исключение было напечатано с полной трассировкой стека? Я не хочу перезапускать приложение, так как трудно воспроизвести эту ошибку, и перезапуск может привести к "уходу"...
Спасибо!
1 ответ
Попробуйте запустить со следующим свойством JVM:
-XX:-OmitStackTraceInFastThrow
Из примечаний к выпуску:
Компилятор в виртуальной машине сервера теперь обеспечивает корректные обратные трассировки стека для всех "холодных" встроенных исключений. Для повышения производительности, когда такое исключение выдается несколько раз, метод может быть перекомпилирован. После перекомпиляции компилятор может выбрать более быструю тактику с использованием предварительно выделенных исключений, которые не обеспечивают трассировку стека. Чтобы полностью отключить использование предварительно выделенных исключений, используйте этот новый флаг:
-XX:-OmitStackTraceInFastThrow
,