Este documento describe cómo obtener un vaciado de pila Java usando el comando jstack Java. Este proceso es válido en Windows, Linux y UNIX, y en cualquier sistema Tidal que utilice Oracle Sun Java versión 1.6+.
Cisco recomienda que tenga conocimiento de Java y del sistema operativo en el que se ejecuta. Además, la versión 1.6+ de Java JDK (Java Development Kit) deberá estar instalada en el sistema.
Sun Java JRE 1.6+
Sun Java JDK 1.6+
Ocasionalmente, el soporte debe capturar los datos de subprocesos de bajo nivel que no se encuentran en los registros maestros.
Para capturar un volcado de pila de Java usando la herramienta jstack proporcionada por Oracle Sun, complete estos pasos.
Nota: El proceso Java debe estar ejecutando Sun Java 1.6+ para ejecutar el comando jstack, y el JDK debe estar instalado en el sistema. Descargue Oracle Sun JDK aquí .
Busque el número de identificación del proceso en la máquina que ejecuta el proceso Java.
En un equipo con Windows, puede utilizar el Administrador de tareas para buscar el número de identificación del proceso.
Específicamente, el PID es el número de identificación del proceso. Si no ve esta columna, seleccione Ver > Columnas >PID (identificador de proceso) para agregarla.
En UNIX/Linux, puede ejecutar el comando ps -ef | grep UnixMaster para obtener el ID de proceso:
root@sunts06:/# ps -ef | grep UnixMaster root 5452 5423 0 14:43:21 pts/14 0:00 grep UnixMaster root 1868 1 0 Jun 09 ? 31:49 /usr/bin/java -DN=UnixMaster -DTI DAL_HOME=/opt/TIDAL/master/bin/.. -Xms256m -Xm root@sunts06:/#
Una vez que tenga el número de identificación del proceso que necesita, vaya al directorio BIN donde está instalado Sun JDK y ejecute el comando jstack {PID} donde {PID} es el número de identificación del proceso. Esto imprimirá la información de la pila de Java en la pantalla.
C:\Program Files\Java\jdk1.6.0_25\bin>jstack 3724 2011-06-30 20:07:37 Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode): "Swing-Shell" daemon prio=6 tid=0x0000000006cce800 nid=0x1bd8 waiting on conditi on [0x000000000843f000] java.lang.Thread.State:WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000fb38ace8> (a java.util.concurrent.lock s.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject .await(Unknown Source) at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) at java.util.concurrent.ThreadPoolExecuter.getTask(Unknown Source) at java.util.concurrent.ThreadPoolExecuter$Worker.run(Unknown Source) at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Thread-2" prio=6 tid=0x0000000006cd0800 nid=0xe6c waiting on condition [0x00000 0000833f000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method)
Para redirigir la información de pila a un archivo, ejecute el mismo comando con la opción de creación de archivo que funcionará tanto en Windows como en Linux/UNIX:
jstack {PID} > [filename.out]