web-dev-qa-db-fra.com

Durée totale de la méthode dans Java VisualVM

Dans Java VisualVM, existe-t-il un moyen d’afficher le temps total de la méthode plutôt que le "temps personnel"? (Ce dernier n'est pas particulièrement utile car il ne vous dit pas combien de temps il faut réellement pour que les méthodes s'exécutent.)

Sinon, existe-t-il un profileur Java libre et autonome qui calcule le temps total de la méthode?

48
kpozin

En regardant les données de trace dans une vue "instantané", vous pouvez voir le total ainsi que le temps personnel. 

Appuyez sur le bouton "instantané" qui apparaît sur le tableau des résultats. Cela créera un nouvel onglet contenant une vue "Arbre des appels" qui décompose le temps par rapport au temps total. La vue "combinée" fournit également ces informations, mais divise l'espace écran en une vue "Zones réactives" similaire à la vue de profilage standard. 

Des instantanés peuvent être créés à partir de données "Profiler" ou "Sampler" standard. Cependant, les instantanés "Profiler" peuvent uniquement être créés avant la fermeture de l'application, tandis que ceux "Sampler" peuvent être créés à tout moment.

(Les informations ci-dessus sont basées sur VisualVM 1.3.1)

49
Joseph Cottam

Il suffit de prendre un instantané des résultats du profilage. Vous obtiendrez l'heure locale ainsi que le temps libre.

7
JB-

Il existe un moyen simple d'obtenir le temps total d'une routine sous forme de pourcentage du temps d'exécution de l'horloge murale (au lieu de quelques millisecondes). Il suffit d’utiliser ctrl-break pour obtenir une pile d’empilements pendant que vous l’attendez. La fraction d'entre eux contenant la routine est le% de temps qu'il prend. La précision dépend du nombre de coups que vous prenez. Si vous cherchez simplement où sont les problèmes, vous n'avez pas besoin d'une mesure de temps précise. Voici une courte explication de la façon dont cela fonctionne.

1
Mike Dunlavey

vous pouvez utiliser jprofiler ou certains outils javaagent pour surveiller le temps d'exécution de la méthode pour vous. Il existe des outils open source sur le github, comme simpleAPM.

0
dingjsh

Je pense que vous voulez savoir combien de temps chaque exécution de méthode prend. Vous voudriez utiliser JETM pour surveiller la performance ..__ Cela vous donnerait le temps d’entrée, le temps de sortie et une différence de temps pour chaque méthode. Vous découvrirez quelle méthode prend combien de temps.

Si vous utilisez Spring, il devient facile d'intégrer JETM http://jetm.void.fm/howto/spring_2_x_integration.html

0
vsingh