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.