http://blog.csdn.net/watermusicyes/article/details/50526814
Dalvik (JIT編譯器即時(shí)編譯器 運(yùn)行時(shí)編譯) 有限內(nèi)存多個(gè)虛擬機(jī)實(shí)例 JIT技術(shù)是Android2.2引入Dalvik
ART (Android Runtime) (Android Runtime) (Ahead-of-time AOT技術(shù)) 把應(yīng)用程序字節(jié)碼轉(zhuǎn)換為機(jī)器碼 Android 4.4 測(cè)試 Android5.0后續(xù)正式
ART 改善了 性能 垃圾回收機(jī)制 應(yīng)用程序除錯(cuò) 性能分析
Dalvik和ART的區(qū)別是啥呢合是?
平臺(tái)支持差別:
Dalvik Android 4.4 及其以下平臺(tái)使用的虛擬機(jī)懂盐; ART Android4.4以上平臺(tái)使用的虛擬機(jī)技術(shù)宜狐;
工作原理差別:
在應(yīng)用程序啟動(dòng)時(shí)第喳,JIT通過(guò)進(jìn)行連續(xù)的性能分析來(lái)優(yōu)化程序代碼的執(zhí)行姓惑,在程序運(yùn)行的過(guò)程中,Dalvik虛擬機(jī)在不斷的進(jìn)行將字節(jié)碼編譯成機(jī)器碼的工作搅方。 (多次編譯 一直在編譯) 啟動(dòng)時(shí) 運(yùn)行時(shí) 編譯
Android Runtime(縮寫(xiě)為 ART)盟蚣,是一種在Android操作系統(tǒng)上的運(yùn)行環(huán)境,由Google公司研發(fā),并在2013年作為Android 4.4系統(tǒng)中的一項(xiàng)測(cè)試功能正式對(duì)外發(fā)布键思,在Android 5.0及后續(xù)Android版本中作為正式的運(yùn)行時(shí)庫(kù)取代了以往的Dalvik虛擬機(jī)础爬。ART能夠把應(yīng)用程序的字節(jié)碼轉(zhuǎn)換為機(jī)器碼,是Android所使用的一種新的虛擬機(jī)吼鳞。它與Dalvik的主要不同在于:Dalvik采用的是JIT技術(shù)看蚜,而ART采用Ahead-of-time(AOT)技術(shù)。 ART同時(shí)也改善了性能赔桌、垃圾回收(Garbage Collection)供炎、應(yīng)用程序除錯(cuò)以及性能分析。
JIT最早在Android 2.2系統(tǒng)中引進(jìn)到Dalvik虛擬機(jī)中疾党,在應(yīng)用程序啟動(dòng)時(shí)音诫,JIT通過(guò)進(jìn)行連續(xù)的性能分析來(lái)優(yōu)化程序代碼的執(zhí)行,在程序運(yùn)行的過(guò)程中雪位,Dalvik虛擬機(jī)在不斷的進(jìn)行將字節(jié)碼編譯成機(jī)器碼的工作竭钝。 與Dalvik虛擬機(jī)不同的是,ART引入了AOT這種預(yù)編譯技術(shù)雹洗,在應(yīng)用程序安裝的過(guò)程中香罐,ART就已經(jīng)將所有的字節(jié)碼重新編譯成了機(jī)器碼。應(yīng)用程序運(yùn)行過(guò)程中無(wú)需進(jìn)行實(shí)時(shí)的編譯工作时肿,只需要進(jìn)行直接調(diào)用庇茫。因此,ART極大的提高了應(yīng)用程序的運(yùn)行效率嗜侮,同時(shí)也減少了手機(jī)的電量消耗港令,提高了移動(dòng)設(shè)備的續(xù)航能力,在垃圾回收等機(jī)制上也有了較大的提升锈颗。 為了保證向下兼容顷霹,ART使用了相同的Dalvik字節(jié)碼文件(dex),即在應(yīng)用程序目錄下保留了dex文件供舊程序調(diào)用然而.odex文件則替換成了可執(zhí)行與可鏈接格式(ELF)可執(zhí)行文件击吱。一旦一個(gè)程序被ART的dex2oat命令編譯淋淀,那么這個(gè)程序?qū)?huì)指通過(guò)ELF可執(zhí)行文件來(lái)運(yùn)行。因此覆醇,相對(duì)于Dalvik虛擬機(jī)模式朵纷,ART模式下Android應(yīng)用程序的安裝需要消耗更多的時(shí)間,同時(shí)也會(huì)占用更大的儲(chǔ)存空間(指內(nèi)部?jī)?chǔ)存永脓,用于儲(chǔ)存編譯后的代碼),但節(jié)省了很多Dalvik虛擬機(jī)用于實(shí)時(shí)編譯的時(shí)間袍辞。
Google公司在Android 4.4中帶來(lái)的ART模式僅僅是ART的一個(gè)預(yù)覽版,系統(tǒng)默認(rèn)仍然使用的是Dalvik虛擬機(jī)常摧,4.4上面提供的預(yù)覽版ART相對(duì)于Android 5.0以后的ART運(yùn)行時(shí)庫(kù)有較大的不同搅吁,尤其體現(xiàn)在兼容性上威创。
ART
優(yōu)點(diǎn):
提高運(yùn)行效率
減少電量消耗
提高續(xù)航能力
垃圾回收機(jī)制提升
缺點(diǎn):
安裝時(shí)間長(zhǎng)
占用更大的儲(chǔ)存空間 內(nèi)部?jī)?chǔ)存用于儲(chǔ)存編譯后的代碼
---------2019-9-18更新------
2.2之前Dalvik虛擬機(jī)沒(méi)有JIT編譯器 是 啟動(dòng)時(shí)編譯 每啟動(dòng)一次編譯一次 (全量)
2.2之后Dalvik虛擬機(jī)引入JIT編譯器 是 運(yùn)行時(shí)編譯 每次運(yùn)行都在編譯(少量)
4.4 測(cè)試 5.0以后正式 ART技術(shù) 在安裝時(shí)編譯 只編譯一次
就是程序員編譯->dalvik讀取編譯的字節(jié)碼->cup運(yùn)行dalvik