Разница между выборкой и профилированием в jVisualVM


158

VisualVM имеет две отдельные вкладки для выборки и профилирования. В чем разница между выборкой и профилированием в VisualVM?

Ответы:


182

Samplingозначает брать много дампов потока и анализировать следы стека. Это обычно быстрее, не требует изменений времени исполнения в вашем байт-коде (которые могут его сломать), но также менее точно.

Profilingозначает инструментарий ваших классов и методов, чтобы они «отчитывались» при каждом запуске. Это более точно, так как он учитывает каждый вызов инструментированного метода, а не только тех, которые были обнаружены при завершении дампа. Однако инструментарий означает, что байт-код ваших классов изменяется, и это может нарушить вашу программу. Фактически, по этой причине использование профилирования на больших серверах приложений (таких как JBoss или WebLogic) часто приводит к тому, что все умирает или зависает.


2
Означает ли это, что профилирование является более точным, чем выборка, но это потребует больше ресурсов?
Параг

10
Я обнаружил, что сэмплирование более чем достаточно точно каждый раз, когда я использую его для определения плохих методов выполнения. Я лично никогда не использую профилирование.
Маркес
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.