기본적으로 자바는 Process와 Thread로 구성되어 있다.

이게 뭔지는 Java 성능을 결정짓는 코딩 습관과 튜닝 이야기라는 책에 잘 나와 있고...


여하튼.. 어떤 Thread가 뭔 짓을 하고 있는지를 보려면 Thread dump를 보면 된다.

자바는 기본적으로 Thread dump를 제공하기 위해서 jstack이라는 명령어(프로그램)을 제공하며 자세한 설명이 필요한 분은 아래의 설명을 보기 바란다.

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstack.html

http://java.sun.com/javase/6/docs/technotes/tools/share/jstack.html

 

만약 JDK 버전이 5.0이면

Jstack pid

JDK 버전이 6.0 이면

jstack -l pid

명령을 수행하면 된다.


만약 솔라리스나 리눅스에서 이 명령으로 수행이 안되면

jstack -F pid

로 수행하면된다.


여기서 pid 는 프로세스의 id다.

만약 jstack이 수행하는데 너무 오래 걸리고, 서버에 부하가 된다면 kill -3으로 쓰레드 덤프를 뜨는 것도 도움이 된다.


분석하는 방법은 쉽지 않지만 다음과 같은 툴들이 있다.
TDA라는 툴
https://tda.dev.java.net/

IBM의 JCA라는 툴

http://www.alphaworks.ibm.com/tech/jca



Posted by tuning-java
,