Differenza tra campionamento e profiling in jVisualVM


158

VisualVM ha due schede separate per il campionamento e il profiling. Qual è la differenza tra campionamento e profiling in VisualVM?

Risposte:


182

Samplingsignifica prendere molti dump di thread e analizzare le tracce dello stack. Questo di solito è più veloce, non richiede modifiche di runtime nel tuo bytecode (che potrebbe romperlo), ma è anche meno preciso.

Profilingsignifica strumentare le tue classi e i tuoi metodi, in modo che "riportino" ogni volta che vengono eseguiti. Questo è più accurato, poiché conta ogni invocazione del metodo strumentato, non solo quelli catturati al termine della discarica. Comunque la strumentazione significa che il bytecode delle tue classi è cambiato, e questo potrebbe interrompere il tuo programma. In realtà, per questo motivo, l'utilizzo della profilazione su server di applicazioni di grandi dimensioni (come JBoss o WebLogic) spesso fa sì che tutto muoia o si blocchi.


2
Significherebbe che la profilazione è più accurata del campionamento, ma richiederebbe più risorse?
Parag,

10
Ho scoperto che il campionamento è più che accurato ogni volta che l'ho usato per individuare i metodi con cattive prestazioni. Personalmente non utilizzo mai la profilazione.
Marquez,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.