estoy usando kill -3
comando para ver el volcado de subprocesos de la JVM en unix. Pero, ¿dónde puedo encontrar el resultado de este kill
comando? ¡¡Estoy perdido!!
java
multithreading
dump
javanerd
fuente
fuente
Respuestas:
Alternativamente, puede usar jstack (incluido con JDK) para realizar un volcado de subprocesos y escribir la salida donde desee. ¿No está disponible en un entorno Unix?
fuente
El volcado de subprocesos se escribe en el sistema desde la máquina virtual en la que ejecutó
kill -3
. Si está redirigiendo la salida de la consola de la JVM a un archivo, el volcado de subprocesos estará en ese archivo. Si la JVM se está ejecutando en una consola abierta, el volcado de hebras se mostrará en su consola.fuente
Hay una manera de redirigir la salida de volcado de subprocesos de JVM en la señal de interrupción a un archivo separado con la opción de diagnóstico LogVMOutput :
fuente
Con Java 8 en la imagen,
jcmd
es el enfoque preferido.A continuación se muestra el fragmento de la documentación de Oracle :
El lanzamiento de JDK 8 introdujo Java Mission Control, Java Flight Recorder y la utilidad jcmd para diagnosticar problemas con aplicaciones JVM y Java. Se sugiere utilizar la última utilidad, jcmd en lugar de la utilidad jstack anterior para mejorar el diagnóstico y reducir la sobrecarga de rendimiento.
Sin embargo, enviar esto con la aplicación puede tener implicaciones de licencia de las que no estoy seguro.
fuente
jcmd
no se puede conectar al proceso de servicio de Windowscom.sun.tools.attach.AttachNotSupportedException: Insufficient memory or insufficient privileges to attach
mientrasjstack -F
tiene éxito: stackoverflow.com/questions/1197912/…En la misma ubicación donde se coloca la salida estándar de la JVM. Si tiene un servidor Tomcat, este será el
catalina_(date).out
archivo.fuente
Cuando se usa kill -3, se debería ver el volcado de subprocesos en la salida estándar. La mayoría de los servidores de aplicaciones escriben la salida estándar en un archivo separado. Debería encontrarlo allí cuando use kill -3. Hay varias formas de obtener volcados de hilo:
kill -3 <PID>
: Da salida a salida estándar.Para las VM de hotspot también podemos usar el
jstack
comando para generar un volcado de hilo. Es parte del JDK. La sintaxis es la siguiente:fuente
kill -3 <PID>
, no debería matar a la JVM. ¿Qué tipo de aplicación Java estás viendo?En Jboss puedes realizar lo siguiente
Esto redirigirá su salida / subproceso a la consola de archivos especificada en el comando anterior.
fuente
fuente
Pasos que debe seguir si desea el volcado de subprocesos de su proceso StandAlone Java
Paso 1: Obtenga el ID de proceso para el script de shell que llama al programa java
Paso 2: Obtenga el ID de proceso para el niño que fue invocado por runABCD. Utilice el PID anterior para obtener los niños.
Paso 3: obtenga el JSTACK para el proceso en particular. Obtenga el ID de proceso de su proceso XYSServer. es decir 8536
fuente