Android 中的Dalvik和ART是什麼,跟JVM又有什麼關係?
什麼是Dalvik?
- Dalvik是Google公司自己設計用於Android平臺的虛擬機器。
- Dalvik虛擬機器是Google等廠商合作開發的Android移動裝置平臺的核心組成部分之一它可以支援已轉換為 .dex格式的Java應用程式的執行, .dex格式是專為Dalvik設計的一種壓縮格式,適合記憶體和處理器速度有限的系統。
- Dalvik經過優化,允許在有限的記憶體中同時執行多個虛擬機器的例項,並且每一個Dalvik應用作為一個獨立的Linux程序執行。獨立的程序可以防止在虛擬機器崩潰時候所有程式都被關閉.
- 很長時間以來,Dalvik虛擬機器一直被使用者指責為拖慢安卓系統執行速度不如IOS的根源。2014年6月25日,Android L正式亮相於召開的谷歌i/o大會,Android L改動幅度較大,谷歌將直接刪除Dalvik,代替它的是傳聞已久的ART.
Dalvik和JVM有啥關係?
主要區別:
- Dalvik是基於暫存器的,而JVM是基於棧的。
- Dalvik執行dex檔案,而JVM執行java位元組碼
- 自Android 2.2開始,Dalvik支援JIT(just-in-time,即時編譯技術)。
優化後的Dalvik較其他標準虛擬機器存在一些不同特性:
1.佔用更少空間
2.為簡化翻譯,常量池只使用32位索引
3.標準Java位元組碼實行8位堆疊指令,Dalvik使用16位指令集直接作用於區域性變數。區域性變數通常來自4位的”虛擬暫存器”區。這樣減少了Dalvik的指令指數,提高了翻譯速度。
什麼是ART?
ART的機制與Dalvik不同。在Dalvik下,應用每次執行的時候,位元組碼都需要通過即時編譯器(just in time, JIT)轉換為機器碼,這會拖慢應用的執行效率,而在ART環境中,應用在第一次安裝的時候,位元組碼酒會預先編譯成機器碼,使其成為真正的本地應用。這個過程叫做預編譯(AOT,Ahead-Of-Time). 這樣的話,應用的啟動(首次)和執行都會變得更加快速.
ART有什麼優缺點呢?
優點:
1,系統性能的顯著提升
2,應用啟動更快,執行更快,體驗更流暢,觸感反饋更及時
3,更長的電池續航能力
4,支援更低的硬體
缺點:
1, 機器碼佔用的儲存空間更大,位元組碼變為機器碼之後,可能會增加10%-20%(不過在應用包中,可執行的程式碼常常只是一部分。比如最新的Google+ Apk是 28.3mb, 但是程式碼只有6.9mb)
2,應用的安裝時間會變長
【附錄】

資料圖
需要資料的朋友可以加入Android架構交流QQ群聊:513088520
點選連結加入群聊【Android移動架構總群】: 加入群聊
獲取免費學習視訊,學習大綱另外還有像高階UI、效能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)等Android高階開發資料免費分享。