hotspot vm은 어떻게 구성되어 있는가 자바 1.3 버전부터 기본 vm으로 사용되어 왔다 
 자바를 만든 sun에서 자바의 성능을 개선하기 위해 just in time( JIT )컴파일러를 만들었고 hots spot이라고 지었다.
자바에서 컴파일을 하면 바이트코드로 변환된다( java complier)

 이 바이트코드는 기계가 바로 읽을 수 있는 형태가 아니며 실제 실행될때 다시 한번 기계가 읽을 수 있는 형태(native code)로 interpreter를 통해 해석된다.
 이때 반복되는 내용을 컴퍼일을 해서 사용한다. 이 과정을 JIT 컴파일링 이라고 한다.  JIT 컴파일이 실행될때 최초 시행되기 최초 실행에서 조금 느릴수 있다.하지만 컴파일 없이 interpret 만 하는 경우보다 반복적인 작업을 할때 훨씬 높은 성능을 낼수있다.

 Jit컴파일링은 어떻게 진행될꺄?
각 메서드들에 있는 카운터를 통해서 통제되며 수행카운터( Invocaiont count), 백에지 카운터( backage counter )를 사용한다. 
이 카운터들이 인터프리터에 의해 증가될때마다 그 값들이 한계치에 도달했는지 확인하고 도달했을 경우 인터프리터는 컴파일을 요청한다. 

컴파일이 요청되면 컴파일 대상 목록에 큐가 쌓이고 하나 이상의 컴파일러 스레드가 이 큐를 모니터링한다. 그동안 수행카운터를 리셋한다. 
 Hotspot은 osr이라는 특별한 컴파일도 수행한다. 인터프리터에서 수행한 코드중에 오랫동안 루프가 지속되는 경우에 사용된다. 


+ Recent posts