Różnica między próbkowaniem a profilowaniem w jVisualVM


158

VisualVM ma dwie oddzielne karty do próbkowania i profilowania. Jaka jest różnica między próbkowaniem a profilowaniem w VisualVM?

Odpowiedzi:


182

Samplingoznacza pobieranie wielu zrzutów wątków i analizowanie śladów stosu. Zwykle jest to szybsze, nie wymaga zmian w kodzie bajtowym w czasie wykonywania (co może go zepsuć), ale jest również mniej dokładne.

Profilingoznacza oprzyrządowanie klas i metod, więc „raportują” za każdym razem, gdy są uruchomione. Jest to dokładniejsze, ponieważ liczy każde wywołanie metody instrumentalnej, a nie tylko te, które zostaną wykryte po wykonaniu zrzutu. Jednak instrumentacja oznacza, że ​​kod bajtowy twoich klas został zmieniony, co może spowodować uszkodzenie programu. Właściwie z tego powodu używanie profilowania na dużych serwerach aplikacji (takich jak JBoss czy WebLogic) często powoduje, że wszystko umiera lub zawiesza się.


2
Czy oznaczałoby to, że profilowanie jest dokładniejsze niż pobieranie próbek, ale wymagałoby więcej zasobów?
Parag

10
Odkryłem, że próbkowanie jest bardziej niż wystarczająco dokładne za każdym razem, gdy używam go do określenia złych metod działania. Osobiście nigdy nie korzystam z profilowania.
Marquez
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.