Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Conventions

Problema

Solução

Informações Relacionadas

Introduction

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

Prerequisites

Requirements

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.

Componentes Utilizados

- Sun Java JRE 1.6+

- Sun Java JDK 1.6+

Conventions

Consulte as Convenções de Dicas Técnicas da Cisco para obter mais informações sobre convenções de documentos.

Problema

Ocasionalmente, o suporte precisa capturar dados de thread de baixo nível que não estão nos logs mestre.

Solução

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 .

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

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

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

Informações Relacionadas

- Suporte Técnico e Documentação - Cisco Systems