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

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

Ответ 1

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

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