Android_Runtime

Android Runtime （ 縮寫爲ART ） ， 是一種在Android操作系統上的運行環境 ， 由Google公司研發 ， 並在2013年作爲Android 4.4 系統中的一項測試功能正式對外發布 ， 在Android 5.0 及後續Android版本中作爲正式的運行時庫取代了以往的Dalvik虛擬機 。 ART能夠把應用程序的字節碼轉換爲機器碼 ， 是Android所使用的一種新的虛擬機 。 它與Dalvik的主要不同在於 ： Dalvik採用的是JIT技術 ， 而ART採用 （ AOT ） 技術 。 ART同時也改善了性能 、 垃圾回收 （ Garbage Collection ） 、 應用程序出錯以及性能分析 。 JIT最早在Android 2.2 系統中引進到Dalvik虛擬機中 ， 在應用程序啓動時 ， JIT通過進行連續的性能分析來優化程序代碼的執行 ， 在程序運行的過程中 ， Dalvik虛擬機在不斷的進行將字節碼編譯成機器碼的工作 。 與Dalvik虛擬機不同的是 ， ART引入了AOT這種預編譯技術 ， 在應用程序安裝的過程中 ， ART就已經將所有的字節碼重新編譯成了機器碼 。 應用程序運行過程中無需進行實時的編譯工作 ， 只需要進行直接調用 。 因此 ， ART極大的提高了應用程序的運行效率 ， 同時也減少了手機的電量消耗 ， 提高了移動設備的續航能力 ， 在垃圾回收等機制上也有了較大的提升 。 爲了保證向下兼容 ， ART使用了相同的Dalvik字節碼文件 （ dex ） ， 即在應用程序目錄下保留了dex文件供舊程序調用 ， 然而.odex文件則替換成了可執行與可鏈接格式 （ ELF ） 可執行文件 。 一旦一個程序被ART的dex2oat命令編譯 ， 那麼這個程序將會只通過ELF可執行文件來運行 。 因此 ， 相對於Dalvik虛擬機模式 ， ART模式下Android應用程序的安裝需要消耗更多的時間 ， 同時也會佔用更大的內部儲存空間 ， 用於儲存編譯後的代碼 ， 但節省了很多Dalvik虛擬機用於實時編譯的時間 。 Google公司在Android 4.4 中帶來的ART模式僅僅是ART的一個預覽版 ， 系統默認仍然使用的是Dalvik虛擬機 ， 4.4 上面提供的預覽版ART相對於Android 5.0 以後的ART運行時庫有較大的不同 ， 尤其體現在兼容性上 。