2016-04-08 18 views
0

Я запустил запись Flight Flight Recording Java в течение 2 минут на сервере приложений JBoss EAP 6.1 под нагрузкой. Я включил подсчет исключений (Java Application => Java Exception => Enabled = true), и я удивлен количеством зарегистрированных исключений.Являются ли исключения для времени жизни JVM в Java Flight Recorder?

Когда я смотрю в представлении Events => Histogram с типом события «Java Application/Java Exception» и Group by «Event Thread», 10 потоков имеют более 2000 исключений. 3 из них имеют более 3000 исключений.

Это общее число зарегистрированных творений Throwable или Error:

Stack Trace       Sample Count 
java.lang.Throwable.<init>()    128 059 
java.lang.Throwable.<init>(String)  116 107 
java.lang.Throwable.<init>(Throwable)  39 207 
java.lang.Error.<init>()      7 
java.lang.Throwable.<init>(String, Throwable) 2 

Так мне интересно, если все эти исключения произошли в течение 2-минутного периода я записал, или они подсчитываются с начала из JVM?

ответ

0

Столбец «Sample Count» на вкладке «Гистограмма» объединяет количество событий относительно значения поля, в вашем случае я считаю верхний кадр трассировки стека. Таким образом, число 128 059 означает, что во время записи было выпущено много событий с верхним фреймом «java.lang.Throwable.<init>()».

Это не может быть информация, которую вы ищете.

Я рекомендую использовать шаблон записи, чтобы включить Исключения/Ошибки, и посмотрев вкладку Исключения, вместо редактирования настроек для отдельных событий и использования вкладки Гистограмма.

0

TL; DR: события исключения Java учитывают только то, что происходит во время записи. Исключение исключений статистики исключений во время жизни JVM (или какое-то другое время JVM global).

Существует два разных точки данных: события Java Exception и Java Error и событие Statistics/Throwables. Если вы только посмотрите на Java Exception/Error, события, которые у вас есть в записи, - это те, которые затухали за это время. Событие Statistics/Throwables берется с регулярными интервалами и может быть с самого начала JVM или, возможно, с начала JFR-механизма или с начала первой записи JFR, имеющейся в запущенной JVM. В основном интересно сравнивать эти значения относительно друг друга. Это событие отображается в верхней части вкладки «Коды/Исключения» в двух текстовых полях.

отметить также, что события Исключения/Ошибка происходят в конструкторе, не тогда, когда он на самом деле бросило

Если ваша программа создает много событий ошибок Java, есть некоторые проблемы с двойной бухгалтерией из них, так что номера может быть некорректным (это мы компенсировали в следующей версии JMC, но не в JMC 5.5) Другие подклассы Throwable будут отображаться как события исключения.