VisualVM ma dwie oddzielne karty do próbkowania i profilowania. Jaka jest różnica między próbkowaniem a profilowaniem w VisualVM?
158
Sampling
oznacza 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.
Profiling
oznacza 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ę.