|  |  |
|
로컬 자바 애플리케이션에서 TPTP 사용하기
이클립스 워크벤치를 통해 자바 애플리케이션 프로파일링을 구축하고, 실행하는 것 외에도 로컬 머신에서 이미 실행중인 자바 애플리케이션을 프로파일링할 수도 있다(여기서 원격 애플리케이션에 대한 프로파일을 다루지는 않지만, 원격 머신에 대한 프로파일링 또한 가능하다). TPTP를 통해 프로세스에 attach할 수도 있다. 프로세스에 어태치할 때, 여태까지 배운 메모리 할당을 찾는 방법과 메모리를 들춰 보는(peek) 도구를 모두 사용할 수 있다.
로컬 자바 애플리케이션 어태치
로컬 자바 애플리케이션을 어태치하기 위해 다음 과정을 따라 하자.
- Profiling Monitor 뷰에서 현재 실행중인 모든 프로세스를 종료하고, 삭제하자.
- 커맨드 창을 열고, JRE를 참조하는
PATH와 JAVA_HOME 환경 변수가 제대로 돼 있는지 확인하자.
- TPTP 라이브러리에 포함되어 있는
LD_LIBRARY_PATH를 확인하자. 현재 테스트 시스템에서는 다음과 같이 환경 변수 값을 확인할 수 있었다(여러분이 사용하는 경로 이름과 디렉터리 이름은 다를 수 있으며, 이 변수는 시스템 환경에 종속된다).
% printenv
.
PATH=/bin:/usr/bin:/usr/X11R6/bin:/home/\
mstreicher/java/jdk/bin
JAVA_HOME=/home/mstreicher/java/jdk
JAVA_DIR=/home/mstreicher/java
LD_LIBRARY_PATH=/home/mstreicher/java/tptpd/lib:
|
- TPTP 에이전트 컨트롤러가 현재 실행중인지 확인하자. 에이전트 컨트롤러가 포함되어 있는 디렉터리로 이동한 다음, 데몬을 중지하고 다시 시작하자.
% cd $JAVA_DIR/tptpd/bin
% ./RAStop.sh
RAServer stopped, pid = 3163
RAServer stopped, pid = 3164
.
RAServer stopped, pid = 18108
% ./RAStart.sh
Starting Agent Controller
RAServer started successfully
|
- 각각의 factory 애플리케이션을 별도의 독립적인 자바 애플리케이션으로 실행하자.
- 예제 애플리케이션을 포함하고 있는 작업 디렉터리로 변경하자. 아마도 $HOME/workspace/ToyMaker일 것이다. 이 디렉터리 내에 SpaceShipToy.java와 이 자바 파일의 .class 파일을 포함하고 있는 example이란 이름의 디렉터리가 보일 것이다.
- 현재 작업 디렉터리에서,
CLASSPATH에 .("점", dot)을 추가하자.
% cd $HOME/workspace/Toy Maker
% ls -F
example
% export CLASSPATH=.:$CLASSPATH
|
-
-XrunpiAgent:server=enabled 옵션을 추가해서 TPTP 에이전트 컨트롤러를 사용해 애플리케이션을 실행하자. enabled 모드에서는 자바 애플리케이션이 일반적으로 시작되고, 컨트롤러가 백그라운드에서 실행된다(어태치될 때까지 애플리케이션이 실행되지 않는 것을 선호한다면, controlled 모드를 사용하라).
% java -XrunpiAgent:server=enabled example/SpaceShipToy
|
- 이클립스를 실행하고, TPTP Profile 버튼에 있는 작은 화살표를 클릭하자. 왼쪽 리스트에 있는 Profile...을 선택하고, Attach - Java Process를 더블 클릭하자.
- 다음 화면에서 Name 필드에
Toys를 입력하고, host로는 localhost를 선택하자. 다음으로 Apply를 클릭하자.
- 그림 21처럼, Agents 탭을 클릭해 agent를 선택하자.
그림 21. 어태치를 위한 agent 선택하기
화면에 나온 agent를 클릭한 다음(다른 애플리케이션이나 프로세스가 프로파일링되지 않는다면, 적어도 지금은 agent가 하나뿐일 것이다) > 를 클릭하자. 변경 사항을 저장하기 위해 Apply를 다시 클릭하자.
- Profiling 탭을 선택하고, Profiling set을 지정함으로써 우리가 수집하길 원하는 데이터를 선택하자. All을 선택할 수도 있고, 이전에 만들었던 것 중에서 선택할 수도 있다.
-
Apply를 클릭한 다음, Profile을 클릭하자. 이클립스는 Profiling and Logging perspective로 perspective를 변경할 것이다.
- 대부분의 시스템에서는 그림 22처럼 창이 뜰 것이다.
프로파일링 리마인더
이 경고는 일반적이며, 프로세스에 어태치하기는 했지만, 사용할 때는 반드시 모니터링을 수동으로 해야 한다고 상기시켜 주는 역할을 한다. 모니터링을 시작하기 위해서는 새로 실행된 프로파일 프로세스에서 마우스 오른쪽 버튼을 클릭하고, Start monitoring을 선택하자.
- 커맨드 창으로 돌아와 애플리케이션을 다뤄보자. 다시 실행중인 애플리케이션을 살펴보기 위해 이클립스로 돌아가자. 애플리케이션을 종료할 때는, Terminate Process 버튼을 클릭하자(그림 23).
그림 23. Terminate Process 버튼
해당 프로세스가 커맨드 창에서 삭제되는 것을 볼 수 있다.
% java -XrunpiAgent:server=enabled example/SpaceShipToy
.
Stage complete.
Start stage...
Stage complete.
Start stage...
Stage complete.
zsh: killed java -XrunpiAgent:server=enabled example/SpaceShipToy
%
|
 |

|
|  |
|