Este documento descreve como obter um dump de pilha Java usando o comando Java jstack. Esse processo é válido no Windows, Linux e UNIX, e em todos os sistemas Tidal usando o Oracle Sun Java versão 1.6+.
A Cisco recomenda que você tenha conhecimento de Java e do sistema operacional no qual o Java é executado. Além disso, o Java JDK (Java Development Kit) versão 1.6+ precisará ser instalado no sistema.
Sun Java JRE 1.6+
Sun Java JDK 1.6+
Consulte as Convenções de Dicas Técnicas da Cisco para obter mais informações sobre convenções de documentos.
Ocasionalmente, o suporte precisa capturar dados de thread de baixo nível que não estão nos logs mestre.
Para capturar um dump de pilha Java usando a ferramenta jstack fornecida pelo Oracle Sun, siga estes passos.
Observação: o processo Java deve estar executando Sun Java 1.6+ para executar o comando jstack e o JDK deve estar instalado no sistema. Faça o download do Oracle Sun JDK aqui .
Localize o número de identificação do processo na máquina que está executando o processo Java.
Em uma máquina Windows, você pode usar o Gerenciador de Tarefas para localizar o número de identificação do processo.
Especificamente, o PID é o número de identificação do processo. Se você não vir esta coluna, selecione Exibir > Colunas >PID (identificador do processo) para adicioná-la.
No UNIX/Linux, você pode emitir o ps -ef | grep UnixMaster para obter a ID do processo:
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:/#
Depois de ter o número de identificação do processo necessário, vá para o diretório BIN onde o Sun JDK está instalado e emita o comando jstack {PID} em que {PID} é o número de identificação do processo. Isso imprimirá as informações da pilha Java na tela.
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 redirecionar as informações da pilha para um arquivo, emita o mesmo comando com a opção de criação de arquivo que funcionará no Windows e no Linux/UNIX:
jstack {PID} > [filename.out]