JVM:Java Virtual Machine, java 程序運行的虛擬機。java
JIT:just In Time Compiler。android
-------翻譯
ART:Anroid RunTime。code
AOT:Ahead Of Time。blog
Dalvik:Android 中使用的java 虛擬機。進程
DVM: Dalvik Virtual Machine: 每一個android 進程對應一個 DVM。編譯器
------虛擬機
2, JVM 與 DVM 的區別編譯
JVM 運行java程序, 加載的事java 字節碼。 DVM 運行android 程序。運行的是Dalvik字節碼
, 均由Java字節碼
轉換而來。效率
3, DVM和ART(Android Runtime)虛擬機的區別與聯繫
DVM 執行的事 dalvik 字節碼,而ART VM 執行的是本地機器碼。
DVM原理:依靠JIT編譯器去解釋執行,運行時動態地將執行頻率很高的dex字節碼翻譯成本地機器碼而後在執行,可是將dex字節碼翻譯成本地機器碼是發生在應用程序的運行過程當中,而且應用程序每一次從新運行的時候,都要從新作這個翻譯工做.
ART原理:應用程序仍然是一個包含dex字節碼的apk文件。在安裝應用的時候,dex中的字節碼將被編譯成本地機器碼,以後每次打開應用,執行的都是本地機器碼。移除了運行時的解釋執行,效率更高,啓動更快。(安卓在4.4中發佈了ART運行時)
4, Android 虛擬機發展歷程:
< 4.4 DVM
< 5.0 DVM (ART)
< 7.0 ART
now ART :(AOT + JIT) 混合編譯,大大提高了初次安裝執行速度。
5,Android 編譯打包流程。