Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Convenciones

Problema

Solución

Información Relacionada

Introducción

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+.

Prerequisites

Requirements

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.

Componentes Utilizados

- Sun Java JRE 1.6+

- Sun Java JDK 1.6+

Convenciones

Consulte Convenciones de Consejos TécnicosCisco para obtener más información sobre las convenciones del documento.

Problema

Ocasionalmente, el soporte debe capturar los datos de subprocesos de bajo nivel que no se encuentran en los registros maestros.

Solución

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í .

1. 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:/#

2. 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)

3. 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]

Información Relacionada

- Soporte Técnico y Documentación - Cisco Systems