Skip to content

CLR / JIT / AOT

빌드 시간 · 실행 시간 · 메모리 사용량 사이의 트레이드오프

Unity 개발자에게 이 주제는 왜 에디터에서는 잘 되는데 모바일 빌드는 다르게 느껴지는가를 설명하는 핵심이다.


  • CLR (Common Language Runtime) .NET 코드의 실행 환경. GC, 타입 시스템, 예외 처리, 스레딩 모델을 제공한다.

  • JIT (Just-In-Time) 실행 시점에 IL 코드를 네이티브 코드로 변환한다.

  • AOT (Ahead-Of-Time) 빌드 시점에 미리 네이티브 코드로 변환한다. (Unity: IL2CPP)


flowchart LR
    CSharp[C# Code]
    IL[IL]
    JIT[JIT Compile]
    Native1[Native Code]

    AOT[AOT Compile]
    Native2[Native Code]

    CSharp --> IL
    IL --> JIT --> Native1
    IL --> AOT --> Native2

구분JIT (Editor/Mono)AOT (IL2CPP)
빌드 시간빠름느림
실행 시간초기 느림 → 점점 최적화비교적 안정적
메모리JIT 캐시 사용코드 크기 증가 가능
제약적음리플렉션/제네릭 제한

“에디터에서는 JIT 기반이라 유연하지만, 모바일에서는 AOT라서 빌드 시간과 제약을 감수하는 대신 실행 안정성을 얻습니다.”