더북(TheBook)

2.2.4 JIT 컴파일

마지막은 지름길이라기보다는 전문 산악인들이나 할 법한, 길고 위험한 알파인 스크램블16이다. 코드를 실행하는 가장 빠른 방법은 기계어로 컴파일하는 것이지만, 최종 사용자(end user)의 컴퓨터가 어떤 아키텍처를 지원할지 모를 경우에는 어떻게 해야 할까?

핫스팟(HotSpot) 자바 가상 머신(JVM, Java Virtual Machine), 마이크로소프트(Microsoft)의 공통 언어 런타임(CLR, Common Language Runtime), 그리고 대부분의 자바스크립트 인터프리터가 하는 것과 동일한 작업을 수행하면 된다. 최종 사용자 컴퓨터에서 (JS라면 소스 파일에서, JVM과 CLR은 플랫폼과 독립적인 바이트코드로부터) 프로그램이 로드되면 그 프로그램이 실행될 컴퓨터에서 지원되는 아키텍처의 네이티브 코드로 컴파일된다. 그래서 이름도 적시 컴파일(Just-In-Time compilation)이라고 한다. 해커들은 보통 ‘JIT’라고 하는데, ‘fit’과 운율이 비슷하다.

가장 정교한 JIT는 생성된 코드에 프로파일링 훅17을 삽입해서 어느 부분이 성능에 가장 큰 영향을 미치는지, 어떤 종류의 데이터가 이 부분을 통과해서 흘러가는지 조사한다. 그런 다음, 점점 시간이 흐르면서 이런 핫스팟(hot spot)에 더 최적화한 옵션을 적용하여 자동으로 재컴파일을 수행한다.

그렇다, 핫스팟(HotSpot) JVM의 '핫스팟'도 여기서 유래된 명칭이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.