Me perfil ejecutar aplicaciones Java a menudo con VisualVM pero necesita X para ejecutarse en la máquinaperfilar una aplicación Java que se ejecuta en la línea de comandos
Sé que puedo conectar a través del puerto de gestión, sino que será una perfiles muestreados en línea que es no es suficiente para mí.
Así que estoy buscando una solución con la que pueda perfilar el uso de la CPU de los métodos de una aplicación Java en ejecución desde la línea de comandos. Es suficiente para mí recopilar datos en el servidor y luego los datos recopilados se pueden analizar en una máquina diferente.
Actualización:
Parece que necesito para ser más específico. Quiero perfilar una aplicación Java en ejecución desde la línea de comandos, no quiero detenerla y volver a ejecutarla.
¿Se puede recoger muestras de 10 o 20 con la pila * * jstack? Entonces, si * Foo * es un método, su uso general del tiempo es la fracción de las muestras que lo contienen. Su uso de CPU es la fracción de aquellas muestras que no terminan en E/S o una llamada al sistema. Su "tiempo propio" es la fracción de muestras en la que él mismo es el término. –
que sería lo mismo que el perfil fuera de línea VisualVM, no lo será? –
[Verifique el documento.] (Http://visualvm.java.net/profiler.html) No le indica, por línea (no función) el porcentaje de tiempo de inclusión (no exclusivo) de que es responsable la línea, y tiempo total (no solo CPU). Sufre de [estos problemas] (http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343). El muestreo de pila no es bonito, pero encuentra los problemas de rendimiento muy rápidamente. Otras herramientas son bonitas, y te dan muchos números para acertar, pero no te llevan directamente al problema, sea lo que sea. –