개발자세상/자바세상
JVMPI, JVMTI
headiron
2008. 7. 30. 16:29
이번에 메모리 프로파일링 업무가 생겨서 프로파일링 툴을 찾다가 우연히 JVMPI, JVMTI에 대해서 알게 되었다. ( JBossProfiler 가 이를 이용한다. )
JVMPI는 5.X 대까지 지원되면 API로
JVM의 Event 발생시 실행될 Callback 함수를 등록하여 해당 Event가 발생시 해당 CallBack 함수를 호출해 주게 하는 API이다.
일단 C계열 언어로 작성을 해야 하므로 , dll 혹은 so 파일을 JVM 환경변수에 등록해 주는 방식이다.
따라서 Object 생성등의 이벤트를 Capture한다면 Class Instance Capture 등을 할 수 있는 것으로 보인다.
http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/jvmpi.html
이것이 5.X가 되면서 JVMTI라는 기술로 발전한다.
( 5.X에서는 그래도 JVMPI를 지원한것으로 보이는데 6.X 대에는 아예 JVMTI만을 지원하는 것으로 보인다. )
http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html
아직 JVMTI에 대해서는 아직 문서를 살펴보지는 않았는데 ( 지선 대리 얘기로는 Java Interface를 제공한다고 하는데...^^ )
개념적으로는 비슷하지 않을까.^^
그동안 Jeniffer 등 모니터링 툴의 작동 원리에 대해서 잘 모르고 있었는데
조금은 그 원리를 알듯하다.