2025-10-04 16:06

Tags: 경영학 소프트웨어 아키텍처

JIT(Just-In-Time)

JIT (Just-In-Time) 컴파일러

  • 프로그램 실행 시점에 코드를 기계어로 번역하여 인터프리터의 유연성과 컴파일러의 성능을 모두 잡는 기술이다.
  • 프로파일러가 자주 사용되는 ‘핫스팟’ 코드를 식별하면, 이를 최적화된 기계어로 컴파일하여 이후 호출 시에는 빠른 속도로 실행되게 한다.
    • 처음에는 인터프리터처럼 코드를 실행하다가,
    • 프로그램이 실행되는 동안 실시간 데이터를 수집(프로파일링)하여 자주 사용되는 코드 영역, 즉 ‘핫스팟(Hotspot)‘을 찾아낸다.
    • 그리고 바로 그 ‘핫스팟’만을 골라내어 AOT 컴파일러처럼 기계어로 번역한다.
  • JIT의 핵심 아이디어: “모든 코드를 미리 최적화하는 것은 낭비다. 가장 많이 실행되는 부분만 집중적으로 최적화하자.”
  • 현대의 자바 가상 머신(JVM)이나 자바스크립트 엔진(V8) 등은 JIT 컴파일을 통해 동적 언어의 성능 한계를 극복하고 높은 실행 속도를 달성한다.
항목JIT (Just-In-Time)AOT (Ahead-of-Time)
컴파일 시점프로그램 실행 중 (Runtime)프로그램 실행 전 (Build time)
최대 성능런타임 정보를 활용한 최적화로 더 높은 성능에 도달할 잠재력 있음런타임 정보가 없어 한계가 있지만, 초기 성능은 빠름
시작 시간인터프리터 실행, 프로파일링, 컴파일 등으로 초기에는 느림 (워밍업 필요)이미 컴파일된 코드를 바로 로드하므로 시작이 매우 빠름
메모리 사용량프로파일링 정보, 여러 계층의 컴파일된 코드 등으로 더 많은 메모리 사용필요한 코드만 담고 있으므로 상대적으로 메모리 사용량이 적음
플랫폼 독립성높음 (바이트코드 등 중간 언어 기반)낮음 (특정 OS와 CPU 아키텍처에 종속)
대표 주자Java (JVM), JavaScript (V8), C# (.NET)C, C++, Go, Rust, Swift