- 전체
- android studio
- Android SDK
- Android NDK
- Android ADK
- Android Etc. Lib.
- Android dalvik VM
- Android 보안
- PhoneGap
- AOSP 개발
- MIT App Inventor 2
- kivy (python)
- ionic framework
- Kotlin (코틀린)
- React Native
Android dalvik VM ART(Android Runtime)
2015.08.05 21:49
ART(Android Runtime)
jvm
(JVM)
- 자바코드 -> 바이트 코드(.class) -------> native
- 스택머신
dalvik( android 4.4.4 이하 버전)
(dex tool) dexopt (JIT)
- 자바코드 -> 바이트코드(.class) --------> 바이트코드 (.dex) -------> .odex -> dalvik ---> native
- 레지스터 머신
- JIT 컴파일
ART( android 4.4.4 이후 버전)
(dex tool) dex2oat
- 자바코드 -> 바이트코드(.class) --------> 바이트코드 (.dex) -------> elf -> art -> native
- dalvik 머신 대체
- AOT(ahead-of-time) 컴파일
- 디바이스에서 dex2oat를 사용해서 한번만 컴파일되고 elf 파일로 실행됨
=> 이렇게 함으로써 JIT 컴파일을 포함한 다양한 오버헤드를 제거하여 실행이 빠르다는 장점
그러나 application이 설치 될 때 컴파일하기 때문에 설치 시간이 증가하고 어플의 크기가 증가함

JIT vs AOT
JIT
- application이 실행되는 동안 컴파일이 필수로 발생, 동적으로 컴파일, 실시간 컴파일 방식
- 자주 실행되는 메소드들은 분석될 수 있고 최적화로 변형되어 더 나은 코드와 더 높은 성능을 만들어냄
- 자주 실행되는 메소드를 규명하고 이러한 메소드를 컴파일하는데 시간이 걸리기 때문에
application은 성능이 피크데 도달하지 못하는 워밍업 기간을 가짐
AOT
- 프로그램이 실행되기 전에 자바 메소드용 네이티브 코드를 생성하여 프로그램이 실행될때 한번 직접 사용될수 있도록 함.
- 동적 클래스 로딩에서 클래스는 실행코드가 그 클래스를 참조하기 전까지는 로딩될 수 없음
추가 자료 정보 링크
http://www.ibm.com/developerworks/library/j-rtj2/
[출처] http://flslg.tistory.com/242
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 7 | 안드로이드 시스템 부팅시에도 프로그램 항상 실행 (재실행) | 졸리운_곰 | 2016.03.02 | 705 |
| 6 |
REST clients for Java, MySQL and JSON Restful Web Services
| 졸리운_곰 | 2016.01.11 | 223 |
| 5 |
14 Great Android apps that are also open source
| 졸리운_곰 | 2015.08.19 | 134 |
| 4 |
안드로이드 오픈소스 프로젝트 리스트
| 졸리운_곰 | 2015.08.19 | 433 |
| 3 |
Android SDK 안드로이드 소스코드 난독화
| 졸리운_곰 | 2015.05.31 | 1254 |
| 2 | 안드로이드 프로그래밍 강좌 모음 | 졸리운_곰 | 2015.04.14 | 458 |
| 1 |
안드로이드 액션바와 프레그먼트 android action bar and fragment 프로그래밍
| 졸리운_곰 | 2014.05.22 | 536 |

