2011-03-05 11 views
8

Al leer brevemente los tutoriales y jugar con JVisualVM, puedo adjuntarlo manualmente a un servidor de larga ejecución oa la aplicación Swing, pero también me gustaría usarlo para programas cortos que se ejecutan en menos de un segundo.¿Cómo adjunto automáticamente JVisualVM a un programa efímero?

Supongo que podría tener mi bloque de programa en la consola, adjuntar JVisualVM, y luego presionar una tecla para que el programa haga su verdadero trabajo. ¿Hay una solución alternativa menos kludgy?

(Esto es principalmente por mi propia curiosidad, y sería bueno usar una GUI pulida como JVisualVM en lugar de -Xprof o HPROF).

+1

posible duplicado de [cómo iniciar la aplicación de perfil con visualvm] (http://stackoverflow.com/questions/4434860/how-to-profile-application-startup-with-visualvm) –

Respuesta

3

Si está utilizando Eclipse, puede utilizar la "parada en el principal" opción en el modo de depuración y añadir las siguientes líneas como argumentos a su proceso

-Dcom.sun.management.jmxremote.port=<fixed_port_number> 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Una vez que se inicia en modo de depuración y bloques continuación, adjunte el jvisualvm a la conexión al proceso utilizando el número de puerto especificado.

2

Agregue suspend = y a la configuración de depuración. Esto hará que su programa se detenga hasta que se adjunte un depurador/perfilador.

+0

Algunas preguntas (http: // stackoverflow.com/questions/7096121/profile-entire-java-program-execution-in-visualvm) indica que la opción suspender no funciona – Kilokahn

Cuestiones relacionadas