AOT 컴파일 엔진의 아키텍처
AOT 컴파일 엔진은 크게 세 단계로 구성된다. 첫째, 코드 도달성 분석에서 정적 분석을 통해 런타임에 실행될 클래스, 메서드, 리소스를 식별한다. JIT와 달리 런타임 프로파일링 정보 없이 폐쇄 세계 가정(closed-world assumption)에 따라 미리 알려진 코드만 포함시킨다. 둘째, 네이티브 코드 생성에서는 도달 가능 메서드를 LLVM 중간 표현(IR)으로 변환 후 대상 아키텍처별 기계어로 컴파일한다. 셋째, 바이너리 링킹
AOT 엔진은 동일 바이너리를 다양한 CPU 아키텍처에서 실행 가능하도록 위치 독립 코드(PIC)를 생성하며, 멀티버전 처리를 통해 런타임에 CPU 기능 수준에 맞는 최적화된 함수 버전을 동적 선택한다. 빌드 시점에 최적화를 집중하므로 시작 시간이 밀리초 단위로 단축되고 메모리 오버헤드가 최소화되는 대신, 동적 클래스 로딩, 리플렉션, JNI 같은 동적 기능에 대해 빌드타임 메타데이터 구성이 필수이다.