Différence entre l'échantillonnage et le profilage dans jVisualVM

158

VisualVM a deux onglets séparés pour l'échantillonnage et le profilage. Quelle est la différence entre l'échantillonnage et le profilage dans VisualVM?

Parag
la source

Réponses:

182

Samplingsignifie prendre beaucoup de thread dumps et analyser les traces de pile. Ceci est généralement plus rapide, ne nécessite pas de modifications d'exécution dans votre bytecode (ce qui peut le casser), mais est également moins précis.

Profilingsignifie instrumenter vos classes et méthodes, afin qu'elles «signalent» chaque fois qu'elles sont exécutées. C'est plus précis, car il compte chaque appel de méthode instrumentée, pas seulement ceux capturés lorsque le vidage est effectué. Cependant, l'instrumentation signifie que le bytecode de vos classes est modifié, ce qui peut interrompre votre programme. En fait, pour cette raison, l'utilisation du profilage sur de grands serveurs d'applications (comme JBoss ou WebLogic) entraîne souvent la mort ou le blocage de tout.

npe
la source
2
Cela voudrait-il dire que le profilage est plus précis que l'échantillonnage, mais qu'il exigerait plus de ressources?
Parag du
10
J'ai trouvé que l'échantillonnage est plus que suffisamment précis à chaque fois que je l'utilise pour identifier les mauvaises méthodes. Personnellement, je n'utilise jamais de profilage.
Marquez