라벨이 성능최적화인 게시물 표시

안드로이드 런타임 구조

이미지
안드로이드 런타임 구조 📋 목차 🧭 런타임 전체 구조 한눈에 🐣 Zygote와 프로세스 생성 ⚙️ ART 컴파일(JIT·AOT·프로파일) 🧼 GC·힙 레이아웃·메모리 📚 클래스 로딩·JNI·리플렉션 🛡 보안·성능 관측·안정화 ❓ FAQ 안드로이드 런타임은 ART(Android Runtime), Zygote 포크 모델, Binder IPC, 시스템 서비스, 리눅스 커널 자원 관리가 서로 맞물려 앱을 실행하게 해요. 사용자에게 보이는 ‘앱’의 시작 뒤에는 클래스 로딩, 바이트코드 해석/컴파일, 가비지 컬렉션, 보안 샌드박스가 즉시 가동돼요.   2025년 기준의 런타임은 프로파일 기반 최적화(PGO), 코드 캐시, 파일 기반 암호화(FBE), A/B 스냅샷 업데이트 같은 현대적 구성과 함께, 지연을 줄이고 안정성을 높이는 방향으로 지속 발전하고 있어요. 내가 생각했을 때 진짜 핵심은 “시작을 빠르게, 실행을 안정적으로, 백그라운드는 조용하게”라는 균형이에요. 🧭 런타임 전체 구조 한눈에 앱 실행 경로는 대략 부팅 시 Zygote 시작 → 프리로드(preload) → 소켓 대기 → 앱 요청 시 포크 → 새 프로세스가 런처 액티비티를 띄우는 순서로 흘러요. 이때 ART는 DEX를 해석하거나 JIT/AOT로 네이티브 코드로 바꿔 실행해요.   시스템 서비스는 SystemServer 프로세스에서 관리돼요. Activity/Package/Window/Power/Location 등 프레임워크 서비스는 Binder IPC로 앱과 통신해요. 커널은 cgroups/SELinux/명명공간으로 격리를 제공하고, LMKD가 메모리 압력에 따라 프로세스를 정리해요.   🗺 구성 블록 요약 블록 역할 핵심 포...