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

158

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

Параг
источник

Ответы:

182

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

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

NPE
источник
2
Означает ли это, что профилирование является более точным, чем выборка, но это потребует больше ресурсов?
Параг
10
Я обнаружил, что сэмплирование более чем достаточно точно каждый раз, когда я использую его для определения плохих методов выполнения. Я лично никогда не использую профилирование.
Маркес