2010-01-14 15 views
14

Cuando ejecuto un comando kill -3 <pid> en mi programa Java, genera el volcado de subprocesos en la consola. ¿Cómo puedo redirigir esto a un archivo?Ubicación de volcado de subprocesos JVM

+0

OK gracias a la gente. Me lo imaginé. el comando kill -3 estaba causando que mi jvm escribiera en STDOUT. Acabo de agregar esto a mi llamada java 1> "ruta a un archivo de registro" y lo hice funcionar. – user242591

Respuesta

22

dos opciones:

ejecutar la aplicación Java con la salida estándar redirigidos

java com.example.MyApp > out.txt 

Uso jstack lugar.

La utilidad jstack le permite obtener un volcado de hilo y enviar la salida a la consola actual en lugar de la extensión estándar de la aplicación Java, lo que le permite redirigirlo.

Por ejemplo, si el PID de la aplicación Java es 12345 (utilizar la utilidad jps para encontrarlo rápidamente):

jstack 12345 > threads.txt 
2

Si desea detalles de todas las roscas y otros detalles de JVM, tratar jconsole.

3

Normalmente utilizo el generador de perfiles NetBeans, pero jvisualvm está disponible desde la línea de comandos.

0

Agregue los siguientes argumentos de JVM a su aplicación. El volcado de subprocesos debe capturarse en dump.log.

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=dump.log 

Tenga en cuenta que no redirige, pero habilita el registro de diagnóstico de JVM. Por lo tanto, podría haber un posible exceso también.

Sin embargo, si puede tener JDK en el entorno, utilizando jstack o jcmd (jcmd is preferred with JDK 1.8), puede capturar el volcado de subprocesos y redirigir a un archivo.

Cuestiones relacionadas