2009-07-07 7 views
1

J'essaie d'utiliser VisualVM pour profiler une application autonome Java (Sun JDK 1.6). J'ai un environnement de test de performance scripté, où je peux exécuter mon application et l'obtenir pour signaler certaines métriques qui m'intéressent.Snapshot JVM calltree pour VisualVM

Existe-t-il un moyen pour que JVM collecte un snapshot de profilage CPU que je puisse analyser ultérieurement avec VisualVM?

Je cherche quelque chose de similaire à l'indicateur -XX:+HeapDumpOnOutOfMemoryError qui écrit un vidage de tas sur le disque juste avant qu'un ne soit lancé.

Répondre

1

L'outil hprof intégré à la JVM (http://java.sun.com/developer/technicalArticles/Programming/HPROF.html) vous permet de capturer des informations de profilage de base, son chien est lent et produit des fichiers volumineux.

VisualVM AFAIK ne possède pas encore ces capacités, mais yourkit a la capacité de faire ce que vous voulez avec son agent et par programmation.

YourKit via la ligne d'agent (-agentlib: yjpagent = OnExit = instantané) http://www.yourkit.com/docs/80/help/additional_agent_options.jsp

Programmatically http://www.yourkit.com/docs/80/api/index.html

En aparté, je suggère que vous êtes prudent avec CPU mesure ainsi que des tests de performance comme va certainement fausser vos résultats, avez-vous envisagé de regarder quelque chose comme https://japex.dev.java.net/ autour de votre code de base?

+0

Oui, VisualVM n'a pas cette capacité et j'ai fini par utiliser YourKit. J'exécute mes tests de performance deux fois: l'un avec le profilage activé pour collecter l'instantané et l'autre avec le profilage désactivé pour collecter les métriques de performance qui m'intéressent. –