Quelqu'un peut-il expliquer la science derrière la fonctionnalité d'échantillonnage de VisualVM ? P>
J'aurais pensé que la collecte de la quantité de CPU consacrée à chaque méthode particulière nécessiterait d'instruminer la demande à profilée, mais cela ne ressemble pas à VisualVM fait une sorte d'instrumentation, donc je suis curieux de savoir comment ça se fait ... p>
3 Réponses :
On dirait que le nouveau plug-in VisualvM-Sampler Rassemblez les performances et les données de mémoire en interrogant périodiquement l'application surveillée pour les décharges de thread ou les histogrammes de mémoire. Vérifiez Cet article Pour plus de détails. P>
Je ne sais pas spécifiquement sur Visualvm, mais je pense que l'échantillonnage de la ou des piles d'appels est généralement la méthode de profilage la plus courante, sauf si vous avez vraiment besoin de timings précis sur des méthodes très spécifiques.
Lorsque je démarre le profilage de la mémoire, Jvisalvm passe quelques secondes avec l'instrumentation de toutes les classes; au moins c'est ce qu'il dit que ça fait. P>
P>
Qui ressemble vraiment à une instrumentation pour moi. :) p>
Je pensais que l'Op demandait à propos de la CPU :)
Le plugin de profilage fait l'instrument, mais le plugin d'échantillonnage ne le fait pas.
Il a une minuterie. Lorsque la minuterie incendie, il copie le contenu actuel de la pile de chaque thread. Ensuite, il traduit les cadres de pile en méthode et les noms d'objet et enregistre un nombre contre les méthodes relatives. P>
Pour cette raison, il n'a pas besoin d'instruminer le code et est donc très léger. Cependant, car il n'insiste pas, le code est peut manquer de choses courtes. Il est donc essentiellement utile pour le suivi des problèmes de performance à long terme ou d'identifier rapidement un point chaud grave dans votre code. P>