- 전체
- 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
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

