[Java] JIT 컴파일러 (JIT Compiler)
Java

[Java] JIT 컴파일러 (JIT Compiler)

728x90

[언어] 컴파일러(Compiler)와 인터프리터(Interpreter) 에서 컴파일러와 인터프리터에 대해서 다뤘었죠~!

그럼 JIT 컴파일러는 무엇이고 어디에 쓰일까요?

 

JIT은 Just In Time을 줄인 말입니다. 뜻을 해석하면 "제시간에 딱 맞춘" 정도가 되겠네요. 산업공학 교양수업에서도 들은 기억이 있는데 물류쪽에서도 자주 쓰이던 단어같아요. 대표적으로 주문이 들어올 때만 생산을 해서 재고를 쌓아두지 않고 바로 딱 맞춰서 고객에게 보낼 수 있는 적시생산시스템도 JIT으로 불리죠.

JIT 컴파일러도 이와 아주 비슷하게 동작합니다. 자세히 설명하기전에 우선 자바가 실행되는 과정을 다시 한번 살펴볼까요?

 

자바(Java) 코드가 실행되기 위해서는 우선 자바 바이트코드(Java bytecode)로 한번 컴파일이 필요합니다. 그리고 JVM에서 자바 바이트코드가 기계어로 번역되는데, 바로 이 과정에서 인터프리터와 JIT 컴파일러 두 개가 모두 사용됩니다. 

 

아니 인터프리터나 컴파일러 중 하나만 쓰면되지.. 왜 굳이 복잡하게 둘다쓰냐 라고 궁금증이 생기신다면, 이유는 실행 속도에 있습니다.

 

기본적으로 인터프리터가 한줄 한줄 읽어들이면서 기계어로 번역하지만, JIT 컴파일러를 통해 같은 코드를 매번 해석하지 않고 인터프리트를 하면서 자주 쓰이는 코드를 캐싱하고, 이후에는 캐싱된 코드를 가져다 씁니다. 따라서 계속해서 한줄 한줄 읽고 번역해야하는 인터프리터의 느린 실행 속도를 개선할 수 있게되는 것이죠.

 

다이어그램으로 보면 아래와 같습니다.

 

출처:

728x90