JIT 컴파일(just-in-time compilation) 또는 동적 번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일 기법이다.
전통적인 입장에서 컴퓨터 프로그램을 만드는 방법은 두 가지가 있는데, 인터프리트 방식과 정적 컴파일 방식으로 나눌 수 있다.
이 중 인터프리트 방식은 실행 중 프로그래밍 언어를 읽어가면서 해당 기능에 대응하는 기계어 코드를 실행하며,
반면 정적 컴파일은 실행하기 전에 프로그램 코드를 기계어로 번역한다.
(정적 <-> 동적)
인터프리터 방식은 프로그램을 실행할 때마다 컴퓨터가 알아 들을 수 있는 언어로 변환하는 작업을 수행한다.
간편하기는 하지만 성능이 매우 느릴 수 밖에 없다.바이트 코드를 읽어 기계어를 생성 하는데, 코드가 실행되는 과정에서 실시간으로 일어나며 전체코드의 필요한 부분만 변환한다.
하지만 정적 컴파일 방식은 변환 작업을 딱 한번만 한다. 언어로 변환하는 작업을 미리 실행한다.
JIT는 인터프리터 방식과 정적 방식을 혼합한 방식이다.
기본적으로 인터프리터에 의해 수행되지만, 필요한 코드의 정보는 캐시에 담아두었다가(메모리에 담아두었다가 재사용 하게 된다. 정적 컴파일 방식 처럼)
자바 소스코드 -> 자바컴파일러 -> 바이트코드 -> JVM -> 기계어 -> 하드웨어 및 OS의 과정을 거친다.
여기서 JVM -> 기계어로 변환되는 부분을 JIT에서 수행한다.
JIT를 사용하면 반복적으로 수행되는 코드는 매우 빠른 성능을 보이지만, 반대로 처음에 시작할 때에는 변환 단계를 거쳐야 하므로 성능이 느린 단점이 있다.
'개발 > Spring' 카테고리의 다른 글
JVM이란? (0) | 2021.02.28 |
---|---|
Hot Spot JVM이란? (0) | 2021.02.27 |
자바(JDK)의 버전별 차이 JDK 1.4 (0) | 2021.02.27 |
자바(JDK)의 버전별 차이 (JDK 1.0 ~ 1.2) (0) | 2021.02.27 |
자바(Java)의 역사 (0) | 2021.02.27 |