Android中的Dalvik和ART有啥區別?

什麼是Dalvik?

Dalvik是Google公司自己設計用於Android平臺的虛擬機
Dalvik虛擬機是Google等廠商合作開發的Android移動設備平臺的核心組成部分之一。
它可以支持已轉換爲.dex格式的; font-family: -apple-system," sf="" ui="" sans="" micro="" font-size:="" background-color:="" /> Dalvik 經過優化,允許在有限的內存中同時運行多個虛擬機的實例,並且每一個Dalvik 應用作爲一個獨立的Linux 進程執行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉。
自Android 2.2開始,Dalvik支持JIT(just-in-time,即時編譯技術)。
優化後的Dalvik較其他標準虛擬機存在一些不同特性: 
1.佔用更少空間 
2.爲簡化翻譯,常量池只使用32位索引  
3.標準Java字節碼實行8位堆棧指令,Dalvik使用16位指令集直接作用於局部變量。局部變量通常來自4位的“虛擬寄存器”區。這樣減少了Dalvik的指令計數,提高了翻譯速度。 


什麼是ART?

即Android Runtime
ART 的機制與 Dalvik 不同。在Dalvik下,應用每次運行的時候,字節碼都需要通過即時編譯器(just in time ,JIT)轉換爲機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成爲真正的本地應用。這個過程叫做預編譯(AOT,Ahead-Of-Time)。這樣的話,應用的啓動(首次)和執行都會變得更加快速。

優點:

1、系統性能的顯著提升。
2、應用啓動更快、運行更快、體驗更流暢、觸感反饋更及時。
3、更長的電池續航能力。
4、支持更低的硬件。
缺點:
1.機器碼佔用的存儲空間更大,字節碼變爲機器碼之後,可能會增加10%-20%(不過在應用包中,可執行的代碼常常只是一部分。比如最新的 Google+ APK 是 28.3 MB,但是代碼只有 6.9 MB。)
2.應用的安裝時間會變長。


ART虛擬機是如何做到無縫替換Dalvik虛擬機的:

        1. ART虛擬機的啓動過程;

        2. Dex字節碼翻譯成本地機器碼的過程。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章