
JIT(Just-In-Time) 컴파일러는 프로그램이 실행되는 시점에 필요한 코드를 기계어로 번역하는 기술로, 성능 향상에 중요한 역할을 한다. 이번 포스팅에서는 JIT 컴파일러의 동작 방식과 장점에 대해 정리해보자.
프로그램이 실행되는 시점에 기계어로 번역하는 컴파일 기법
JIT 컴파일러는 프로그램 실행 중 자주 사용되는 코드를 기계어로 변환하여 성능을 최적화한다.
실행 시점에 코드를 컴파일하기 때문에 "Just-In-Time(적시에)"이라는 이름이 붙었다고 한다. 변환된 코드는 캐시에 저장되며, 이후 동일한 코드가 실행될 때 재컴파일 없이 빠르게 처리된다.
JIT 컴파일러는 실행 중인 프로그램의 동작을 모니터링하고, 특정 조건을 만족하는 코드만 선택적으로 컴파일한다.
Java 프로그램은 JVM(Java Virtual Machine)에서 실행된다. JIT 컴파일러는 자주 실행되는 루프나 메서드를 기계어로 변환하여 프로그램 성능을 높인다.
예를 들어, 특정 루프가 오랫동안 실행되면 JVM은 루프의 코드를 컴파일하고, 다음 반복부터는 컴파일된 코드를 실행한다.
※ JVM(Java Virtual Machine) : OS에 종속받지 않고 CPU가 JAVA를 인식, 실행할 수 있게 하는 가상 컴퓨터


※ 참조 : hyeinisfree.tistory.com
위 그림에서 볼 수 있듯이, 반복되는 코드를 컴파일하여 캐시에 저장해두면 인터프리터가 해당 코드를 다시 해석할 필요 없이 컴파일된 코드를 직접 사용할 수 있다.
| 특성 | 정적 컴파일러 | 인터프리터 | JIT 컴파일러 |
|---|---|---|---|
| 컴파일 시점 | 실행 전 | 실행 중 | 실행 중 |
| 성능 | 높음 | 낮음 | 높음 |
| 컴파일 범위 | 전체 코드 | 실행 중 전체 | 필요한 코드만 |
| 유연성 | 낮음 | 높음 | 중간 |