Dalvik與ART的介紹及區別(一)

一、Dalvik

  Dalvik虛擬機,它可以支持已轉換爲.dex(即“Dalvik Executable”)格式的Java應用程序的運行。.dex格式是專爲Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。Dalvik由Dan Bornstein編寫的,名字來源於他的祖先曾經居住過的小漁村達爾維克(Dalvík),位於冰島Eyjafjörður。

  大多數虛擬機包括JVM都是一種堆棧機器,而Dalvik虛擬機則是寄存器機。兩種架構各有優劣,一般而言,基於堆棧的機器需要更多指令,而基於寄存器的機器指令更長。

二、ART

  Android Runtime(縮寫爲ART),在2013年作爲Android 4.4系統中的一項測試功能正式對外發布,Android 5.0開始作爲正式的運行時庫取代了以往的Dalvik虛擬機。ART能夠把應用程序的字節碼轉換爲機器碼,是Android所使用的一種新的虛擬機。而ART採用Ahead-of-time(AOT)技術。改善了性能、垃圾回收(Garbage Collection)、應用程序除錯以及性能分析。

三、JIT

  JIT是”Just In Time Compiler”的縮寫,就是”即時編譯技術”,與Dalvik虛擬機相關。JIT最早在Android 2.2系統中引進到Dalvik虛擬機中,在應用程序啓動時,JIT通過進行連續的性能分析來優化程序代碼的執行,在程序運行的過程中,Dalvik虛擬機在不斷的進行將字節碼編譯成機器碼的工作。

四、ART 和 Dalvik 的主要區別

1.ART引入了AOT預編譯技術

  在應用程序安裝的過程中,ART就已經將所有的字節碼重新編譯成了機器碼。應用程序運行過程中無需進行實時的編譯工作,只需要進行直接調用。因此,ART極大的提高了應用程序的運行效率,同時也減少了手機的電量消耗,提高了移動設備的續航能力,在垃圾回收等機制上也有了較大的提升。

2.ART模式下需要消耗更多的時間和儲存空間

  爲了保證向下兼容,ART使用了相同的Dalvik字節碼文件(dex),即在應用程序目錄下保留了dex文件供舊程序調用,然而.odex文件則替換成了可執行與可鏈接格式(ELF)可執行文件。一旦一個程序被ART的dex2oat命令編譯,那麼這個程序將會指通過ELF可執行文件來運行。因此,相對於Dalvik虛擬機模式,ART模式下Android應用程序的安裝需要消耗更多的時間,同時也會佔用更大的儲存空間(指內部儲存,用於儲存編譯後的代碼)。

3.ART模式下實時編譯時間減少很多

  由於在ART 模式下,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成爲真正的本地應用。之後打開App的時候,不需要額外的翻譯工作,直接使用本地機器碼運行,因此運行速度提高。雖然首次安裝時間和應用存儲空間佔用會更多,但是和更流暢的應用體驗來比,則不值得一提了。

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