web-dev-qa-db-fra.com

comment profiler le démarrage d'une application avec visualvm

Autant que je sache, vous ne pouvez profiler qu'une application en cours d'exécution en utilisant VisualVM .

Quelqu'un connaît-il un moyen de profiler le lancement et le démarrage d'une application Java utilisant VisualVM?

Je suis convaincu qu'il doit y avoir un moyen, sinon ce serait un oubli majeur.

En espérant que je viens de mal lire la documentation.

Merci, p.

53
pstanton

Configurez-vous le profilage à l'aide de l'option de ligne de commande `-Xrunjdwp"? Si tel est le cas, cette option a un paramètre "suspend" uniquement à cette fin:

Vrai si la cible VM doit être suspendue immédiatement avant le chargement de la classe principale; false sinon.

Exemple de ma propre configuration:

-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

J'utilise cela avec le profileur YourKit, mais je pense que le principe est le même.

9
skaffman

Utilisez le lanceur Eclipse et définissez un point d'arrêt à un endroit approprié dans la méthode principale.

Ensuite, démarrez en mode débogage, activez le profilage dans visualVM, puis recommencez à utiliser Eclipse.

Cela ne profilera pas le chargement des classes et d'autres choses, mais c'est assez bon pour moi.

17
KarlP

J'ai trouvé Startup Profiler utile:

Le plug-in Startup Profiler pour VisualVM 1.3.6 permet le profilage instrumenté des applications locales Java 5+ à partir de leur démarrage. Il est également utile lors du profilage de processus à exécution courte.

9
Haim Raman

Les deux environnements de développement courants Java (NetBeans/Eclipse) prennent en charge l'exécution d'application directement avec VisualVM attaché. Dans le cas d'Eclipse, vous devez installer un plugin . Dans le cas de NetBeans, le le support est AFAIK déjà intégré.
Même si vous ne disposez pas des sources, vous pouvez toujours exécuter le ou les fichiers JAR via les deux environnements et donc démarrer votre application connectée à VisualVM.

0
Robert