Почему log4j отключает отслеживание стека после (много из) повторение того же исключения?

ObjectType instance = (ObjectType)Activator.CreateInstance(objectType);

Activator класс имеет универсальный вариант, который делает это немного легче:

ObjectType instance = Activator.CreateInstance<ObjectType>();
8
задан Kai Huppmann 17 July 2009 в 08:24
поделиться

2 ответа

Используете Java 5 или выше?

Тогда вы видите:

Компилятор в виртуальной машине сервера теперь обеспечивает правильные трассировки стека для всех «холодных» встроенных исключений. В целях повышения производительности, когда такое исключение генерируется несколько раз, метод может быть перекомпилирован. После перекомпиляции компилятор может выбрать более быструю тактику, используя заранее выделенные исключения, которые не обеспечивают трассировку стека. Чтобы полностью отключить использование предварительно выделенных исключений, используйте этот новый флаг: -XX: -OmitStackTraceInFastThrow

Предоставлено примечаниями к выпуску Java 5 .

22
ответ дан 5 December 2019 в 07:12
поделиться

Мне кажется, что это особенность, по крайней мере, если трассировки стека действительно идентичны. Зачем вам делать ваши журналы больше (и, следовательно, труднее искать), не получая дополнительной информации? Проверим возможность настройки этой функции ...

РЕДАКТИРОВАТЬ: Я просмотрел код log4j, и никаких следов. Это убедительно свидетельствует о том, что ответ Роберта правильный. Хорошая функция виртуальной машины IMO :)

1
ответ дан 5 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: