1.概述 Android4.4以上開始使用ART虛擬機,在此之前我們一直使用的Dalvik虛擬機,那麼為什麼Google突然換了Android運行的虛擬機呢?答案只有一個:ART虛擬機更優秀。 2.Dalvik vs ARTDalvik Android4.4及以前使用的都是Dalvik虛擬機,我們知 ...
1.概述
Android4.4以上開始使用ART虛擬機,在此之前我們一直使用的Dalvik虛擬機,那麼為什麼Google突然換了Android運行的虛擬機呢?答案只有一個:ART虛擬機更優秀。
2.Dalvik vs ART
Dalvik
Android4.4及以前使用的都是Dalvik虛擬機,我們知道Apk在打包的過程中會先將java等源碼通過javac編譯成.class文件,但是我們的Dalvik虛擬機只會執行.dex文件,這個時候dx會將.class文件轉換成Dalvik虛擬機執行的.dex文件。Dalvik虛擬機在啟動的時候會先將.dex文件轉換成快速運行的機器碼,又因為65535這個問題,導致我們在應用冷啟動的時候有一個合包的過程,最後導致的一個結果就是我們的app啟動慢,這就是Dalvik虛擬機的JIT特性(Just In Time)。
ART
ART虛擬機是在Android5.0才開始使用的Android虛擬機,ART虛擬機必須要相容Dalvik虛擬機的特性,但是ART有一個很好的特性AOT(ahead of time),這個特性就是我們在安裝APK的時候就將dex直接處理成可直接供ART虛擬機使用的機器碼,ART虛擬機將.dex文件轉換成可直接運行的.oat文件,ART虛擬機天生支持多dex,所以也不會有一個合包的過程,所以ART虛擬機會很大的提升APP冷啟動速度。
3.總結
ART優點:
加快APP冷啟動速度
提升GC速度
提供功能全面的Debug特性
ART缺點:
APP安裝速度慢,因為在APK安裝的時候要生成可運行.oat文件
APK占用空間大,因為在APK安裝的時候要生成可運行.oat文件