в чем разница между sampler и profiler в JvisualVM?

Я обнаружил, что в JvisualVM есть два плагина, один-sampler, а другой-profiler.

Я также обнаружил, что у них похожий пользовательский интерфейс, однако результаты имеют большую разницу, так в чем разница для них?

и почему у них большая разница?

1 ответов


В общем:

профайлер работает все время, поэтому он дает вам полный стек вызовов; в любой момент времени.

сэмплер принимает только "снимки" в определенный момент времени.

дело в том, что когда вы "профилируете" все, то это значительно замедляет вашу JVM; и он создает огромный объемов данных в течение нескольких секунд. Подумайте: профилировщик запишет и вызов метода, имеет место!

поэтому, как правило, вы изначально используете сэмплер, когда у вас нет" понятия " о том, что происходит в вашем приложении. И тогда вы просто надеетесь, что образцы скажут вам что-то; например: "Эй, в наших 10 000 образцах мы находимся в этом одном методе большую часть времени, почему это?"Но как только у вас будет лучшее понимание того, что вы "охотитесь", вы попытаетесь выполнить полный прогон профилировщика, чтобы захватить всю цепочку вызовов, которая ведет в некоторые метод.

и тогда есть какая - то" середина "- где вы профилируете" все", но исключить вещи. Другими словами: большинство профилировщиков позволяют вам сказать " do не методы профиля в классах в том или ином пакете". Но, конечно, исключение пакетов / иерархий имеет смысл только тогда, когда у вас уже есть довольно хорошее чувство, в каком направлении вы намерены исследовать.