일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 쓰레드 비디오 다운로드
- 라이브아카데미
- 객치지향프로그래밍
- Realtime Database
- 이모티콘
- django
- 안드로이드
- endless scrolling
- skeleton architecture
- 특수기호
- 쓰레드 이미지 다운로드
- non conventional NFR
- Firebase
- 젠킨스
- re-engineering
- 특수문자
- 자료구조
- git
- Android
- firestore
- 파이썬
- 메타 쓰레드
- 영어회화
- conventional NFR
- 직장영어
- RecyclerView
- meta threads
- jenkins
- Python
- cloud firestore
- Today
- Total
Owl Life
안드로이드 Dalvik과 ART, JIT과 AOT 차이점 본문
apk를 설치하면 실행파일의 경우 storage에 dex 파일로 저장됩니다. dex 파일은 byte code로 이루어져 있기 때문에 이를 실행하려면 단말의 cpu에 맞게 machine code로 변환하여야 합니다. 이 machine code로 프로그램을 실행할 수 있기 때문입니다. 코드 변환에는 비용이 발생하기 때문에 어떤 방식으로 변환하느냐에 따라서 크게 JIT과 AOT로 나뉩니다. 이 두 방식은 안드로이드에 국한되는것이 아니라 다른 Language에서도 사용되는 일반적인 컴파일 방식입니다.
■ Dalvik
JIT (Just In Time) 컴파일 방식을 사용합니다.
※ JIT의 주요 특징
-
앱이 실행되는 순간 자주 사용되는 바이트 코드를 컴파일하여 Machine Code로 변환 후 캐싱하여 RAM에 올립니다.
-
화면 전환 또는 앱이 실행 될 때마다 필요한 코드를 실시간 컴파일 하기 때문에 그 시간만큼 사용성에 있어서 latency가 발생할 수 밖에 없습니다.
-
컴파일이 빈번하게 발생되기 때문에 RAM 점유율, 배터리 소모량 증가 등의 이슈도 있습니다.
-
장점으로는, AOT 대비 APP 설치 시간이 매우 빠릅니다. 설치 할때 컴파일을 하지 않기 때문입니다.
-
AOT 대비 앱 용량이 작습니다.
※ DVM에서의 실행 과정
■ ART
AOT(Ahead Of Time) 컴파일 방식을 사용하고 Android Kitkat 버전에 도입된 새로운 앱 실행 환경입니다. JIT의 단점들을 보완하여 큰 성능 향상을 가져왔습니다.
※ AOT의 주요 특징
-
Android Kitkat 버전에 도입된 ART (Android Runtime) 에서 사용되는 컴파일 방식입니다.
-
앱 설치 할때 모든 코드를 Machine Code로 변환 후 ROM에 저장합니다.
-
앱 설치 속도가 JIT에 비하여 매우 느립니다.
-
앱 실행시 컴파일을 하지 않아도 되기 때문에 컴파일로 인해 발생될수 있는 latency가 없어서 매우 빠릅니다.
-
미리 컴파일 후에 ROM에 저장하기 때문에 용량이 큽니다. (JIT 대비 보통 1.5배 ~ 최대 2배)
최적화 작업으로 인하여 JIT과 AOT가 각각 도입되었다가 Android N 버전부터는 둘다 사용되는 하이브리드 형태로 운용되고 있습니다.
※ ART에서의 실행 과정
'Android Dev > dev' 카테고리의 다른 글
AndroidQ 다크테마 적용방법 (0) | 2019.09.27 |
---|---|
[개발자 폰트] 나눔고딕코딩 에서 D2 Coding 글꼴로 변경하다. (0) | 2017.12.03 |