art虛擬機介紹
Android 4.4提供了一種與Dalvik截然不同的運行環境ART(Android runtime)支持,ART源于google收購的Flexycore的公司。ART 的機制與 Dalvik 不同。在Dalvik下,應用每次運行的時候,字節碼都需要通過即時編譯器(just in time ,JIT)轉換為機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成為真正的本地應用。這個過程叫做預編譯(AOT,Ahead-Of-Time)。這樣的話,應用的啟動(首次)和執行都會變得更加快速。
虛擬機切換設置
Settings> Developer Options> Select Runtime
(設置>開發者選項>選擇運行環境)
ART優點
- 系統性能的顯著提升。
- 應用啟動更快、運行更快、體驗更流暢、觸感反饋更及時。
- 更長的電池續航能力。
- 支持更低的硬件。
**ART缺點 **
- 更大的存儲空間占用,可能會增加10%-20%。
- 更長的應用安裝時間。
Dalvik虛擬機性能優化
- DEX代碼安裝時或第一次動態加載時odex化處理。
- Android2.3版本提供了JIT機制提升性能;
JIT(Just-In-Time),用來在運行時動態地將執行頻率很高的dex字節碼編譯成本地機器碼,然后再執行。通過JIT,就可以有效地提高Dalvik虛擬機的執行效率。但是,應用每次運行的時候,部分字節碼都需要通過JIT轉換為機器碼,降低了應用程序運行效率。而ART則是使用AOT進行處理(Ahead-Of-Time),所謂AOT是指在運行以前就把中間代碼靜態編譯成本地代碼,這就減去了JIT運行時的轉換時間,因此,即使Dalvik采用了JIT,Dalvik總體性能還是不能與直接執行本地機器碼的ART虛擬機相比。
AOT的編譯器分兩種模式:
- 在開發機上編譯預裝應用;
C/C++開發應用程序的時候,編譯器直接就把它們翻譯成目標機器碼。 - 在設備上編譯新安裝的應用;
在應用安裝時將dex字節碼翻譯成本地機器碼。