JIT 컴파일러와 AOT 컴파일러

🏷️ java 🏷️ cs

수정일 : 2024-12-16


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

프로그램이 실행 중일때, 바이트 코드를 네이티브 코드로 컴파일하는 컴파일러

주요 작업

  • Hotspot(자주 실행되는 코드)을 탐지
  • 최적화 수준 결정
  • 최적화 및 컴파일
  • 네이티브 코드 생성
  • 캐싱 : 네이티브 코드를 캐싱하여 재사용

AOT(Ahead-Of-Time) 컴파일러

프로그램이 실행되기 전에, 바이트 코드를 네이티브 코드로 컴파일하는 컴파일러

  • 인터프리터 방식 X, 컴파일 방식 O
  • 실행 속도가 빠름
  • GraalVM을 사용하면 Java 프로그램을 AOT 컴파일 가능

GraalVM

오라클에서 개발한 JVM 기반의 다양한 언어를 지원하는 통합 실행 환경 (JVM, JDK)

장점

  • 멀티 언어 지원
  • AOT 컴파일 지원

단점

  • 초기 설정이 복잡함
  • 빌드 속도가 느림

JIT vs AOT

구분JITAOT
컴파일 시점프로그램 실행 중프로그램 실행 전
컴파일 대상Hotspot(자주 실행되는 코드만)전체 코드
컴파일 속도상대적으로 느림상대적으로 빠름
실행 속도초기에는 느림(컴파일 시간 소요)초기부터 빠름
메모리 사용량상대적으로 적음더 많이 소모될 수 있음
초기 부팅 시간상대적으로 느림빠름