Android4.4以上開始使用ART虛擬機(jī)哀蘑,在此之前我們一直使用的Dalvik虛擬機(jī)睬隶,那么為什么Google突然換了Android運(yùn)行的虛擬機(jī)呢说搅?答案只有一個(gè):ART虛擬機(jī)更優(yōu)秀埠褪。
Dalvik vs ART
Dalvik Android4.4及以前使用的都是Dalvik虛擬機(jī),我們知道Apk在打包的過程中會先將java等源碼通過javac編譯成.class文件画畅,但是我們的Dalvik虛擬機(jī)只會執(zhí)行.dex文件谬盐,這個(gè)時(shí)候dx會將.class文件轉(zhuǎn)換成Dalvik虛擬機(jī)執(zhí)行的.dex文件炕置。Dalvik虛擬機(jī)在啟動的時(shí)候會先將.dex文件轉(zhuǎn)換成快速運(yùn)行的機(jī)器碼兆沙,又因?yàn)?5535這個(gè)問題,導(dǎo)致我們在應(yīng)用冷啟動的時(shí)候有一個(gè)合包的過程莉掂,最后導(dǎo)致的一個(gè)結(jié)果就是我們的app啟動慢葛圃,這就是Dalvik虛擬機(jī)的JIT特性(Just In Time)。
ART ART虛擬機(jī)是在Android5.0才開始使用的Android虛擬機(jī),ART虛擬機(jī)必須要兼容Dalvik虛擬機(jī)的特性库正,但是ART有一個(gè)很好的特性AOT(ahead of time)曲楚,這個(gè)特性就是我們在安裝APK的時(shí)候就將dex直接處理成可直接供ART虛擬機(jī)使用的機(jī)器碼,ART虛擬機(jī)將.dex文件轉(zhuǎn)換成可直接運(yùn)行的.oat文件褥符,ART虛擬機(jī)天生支持多dex龙誊,所以也不會有一個(gè)合包的過程,所以ART虛擬機(jī)會很大的提升APP冷啟動速度喷楣。
總結(jié)
ART優(yōu)點(diǎn):
加快APP冷啟動速度
提升GC速度
提供功能全面的Debug特性
ART缺點(diǎn):
APP安裝速度慢趟大,因?yàn)樵贏PK安裝的時(shí)候要生成可運(yùn)行.oat文件
APK占用空間大,因?yàn)樵贏PK安裝的時(shí)候要生成可運(yùn)行.oat文件