JVM기술중 가장 중요한 것중 하나인 JVM Profiling이 있다. JVM 프로파일링은 열어가지 방법을 통해 구현할 수 있다. 아래와 같이 3가지의 방법이 존재하지만 그에 대한 특징과 장점을 알아본다. JVM이 제공하는 가장 기본적인 기술중에 정의된 스팩이 바로 JVMPI다음에 나온 JVMTI(Java Virtual Machine Tool Interface)기술이다. JVMPI는 실험적으로 만들어진 스팩이긴 하나 많은 개발자들로부터 사용되어지고 있고 이를 기반으로한 상용 툴도 존재한다. JVMTI는 SDK 1.5부터 제공된 기술이고 JVMPI(Java Virtual Machine Profiling Interface)를 대체한다. JVMTI는 JVMPI의 여러가지 요소들에 대한 향상과 강력한 인터페이스를 제공한다. JVMTI는 자바 어플리케이셔의 디버깅과 프로파일링에 유용한데 이벤트와 통지를 인터페이스로 등록하고 이를 전달받아 필요한 정보를 수집하게 된다. 또한 JVMTI를 통해 메모리 할당, CPU 점유, Lock contention등의 정보를 획득할 수 있다. JVMTI는 각각의 JVM내부 이벤트에 대한 Callback을 통해 처리하므로 보다 효과적인 성능 집계를 할 수 있다. JVMTI는 JVMPI 보다 4배나 많은 다양한 API를 제공한다. 다양한 이벤트 타입을 제공한다(Exception, Field Access, modification event, breakpoint, single-step event). JVMPI에서 제공하는 다양한 API들은 성능이슈가 매우 많다. 그러나 JVMTI는 이를 모두 극복하고 최적화된 정보를 제공한다.
|
Optimization >