Art上應(yīng)用啟動快,運(yùn)行快,但是耗費(fèi)更多存儲空間,安裝時間長,總的來說ART的功效就是"空間換時間"。
ART: Ahead of Time Dalvik: Just in Time
什么是Dalvik:Dalvik是Google公司自己設(shè)計用于Android平臺的Java虛擬機(jī)。Dalvik虛擬機(jī)是Google等廠商合作開發(fā)的Android移動設(shè)備平臺的核心組成部分之一,它可以支持已轉(zhuǎn)換為.dex(即Dalvik Executable)格式的Java應(yīng)用程序的運(yùn)行,.dex格式是專為Dalvik應(yīng)用設(shè)計的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。Dalvik經(jīng)過優(yōu)化,允許在有限的內(nèi)存中同時運(yùn)行多個虛擬機(jī)的實(shí)例,并且每一個Dalvik應(yīng)用作為獨(dú)立的Linux進(jìn)程執(zhí)行。獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時候所有程序都被關(guān)閉。
什么是ART:Android操作系統(tǒng)已經(jīng)成熟,Google的Android團(tuán)隊開始將注意力轉(zhuǎn)向一些底層組件,其中之一是負(fù)責(zé)應(yīng)用程序運(yùn)行的Dalvik運(yùn)行時。Google開發(fā)者已經(jīng)花了兩年時間開發(fā)更快執(zhí)行效率更高更省電的替代ART運(yùn)行時。ART代表Android Runtime,其處理應(yīng)用程序執(zhí)行的方式完全不同于Dalvik,Dalvik是依靠一個Just-In-Time(JIT)編譯器去解釋字節(jié)碼。開發(fā)者編譯后的應(yīng)用代碼需要通過一個解釋器在用戶的設(shè)備上運(yùn)行,這一機(jī)制并不高效,但讓應(yīng)用能更容易在不同硬件和架構(gòu)上運(yùn)行。ART則完全改變了這套做法,在應(yīng)用安裝的時候就預(yù)編譯字節(jié)碼到機(jī)器語言,這一機(jī)制叫Ahead-Of-Time(AOT)編譯。在移除解釋代碼這一過程后,應(yīng)用程序執(zhí)行將更有效率,啟動更快。
ART優(yōu)點(diǎn):
系統(tǒng)性能的顯著提升
應(yīng)用啟動更快、運(yùn)行更快、體驗更流暢、觸感反饋更及時
更長的電池續(xù)航能力
支持更低的硬件
ART缺點(diǎn):
更大的存儲空間占用,可能會增加10%-20%
更長的應(yīng)用安裝時間