이 문서에서는 Java jstack 명령을 사용하여 Java 스택 덤프를 가져오는 방법에 대해 설명합니다.이 프로세스는 Windows, Linux 및 UNIX 및 Oracle Sun Java 버전 1.6 이상을 사용하는 모든 Tidal 시스템에서 유효합니다.
Java가 실행되는 운영 체제에 대한 Java 지식 및 지식이 있는 것이 좋습니다.또한 Java JDK(Java Development Kit) 버전 1.6 이상을 시스템에 설치해야 합니다.
Sun Java JRE 1.6 이상
Sun Java JDK 1.6+
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참고하십시오.
경우에 따라 지원 시 마스터 로그에 없는 하위 수준 스레드 데이터를 캡처해야 합니다.
Oracle Sun에서 제공하는 jstack 툴을 사용하여 Java 스택 덤프를 캡처하려면 다음 단계를 완료하십시오.
참고: jstack 명령을 실행하려면 Java 프로세스가 Sun Java 1.6 이상을 실행해야 하며 JDK가 시스템에 설치되어 있어야 합니다.여기에서 Oracle Sun JDK를 다운로드합니다 .
Java 프로세스를 실행하는 시스템에서 프로세스 식별 번호를 찾습니다.
Windows 시스템에서 작업 관리자를 사용하여 프로세스 식별 번호를 찾을 수 있습니다.
특히 PID는 프로세스 식별 번호입니다.이 열이 표시되지 않으면 View > Columns >PID(프로세스 식별자)를 선택하여 추가합니다.
UNIX/Linux에서는 ps -ef를 실행할 수 있습니다. | grep UnixMaster 명령 - 프로세스 ID를 가져옵니다.
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:/#
필요한 프로세스 식별 번호가 있으면 Sun JDK가 설치된 BIN 디렉터리로 이동하여 jstack {PID} 명령을 실행합니다. 여기서 {PID}은 프로세스 식별 번호입니다.그러면 Java 스택 정보가 화면에 인쇄됩니다.
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)
스택 정보를 파일로 리디렉션하려면 Windows 및 Linux/UNIX 모두에서 작동하는 파일 생성 옵션과 동일한 명령을 실행합니다.
jstack {PID} > [filename.out]