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?

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.