Android Runtime

Android Runtime(縮寫為ART),是一種在Android作業系統上的執行環境,由Google公司研發,並在2013年作為Android 4.4系統中的一項測試功能正式對外發布,在Android 5.0及後續Android版本中作為正式的執行時庫取代了以往的Dalvik虛擬機器。ART能夠把應用程式的位元組碼轉換為機器碼,是Android所使用的一種新的虛擬機器。它與Dalvik的主要不同在於:Dalvik採用的是JIT技術,而ART採用Ahead-of-time英語Ahead-of-time compilation(AOT)技術。ART同時也改善了效能、垃圾回收(Garbage Collection)、應用程式出錯以及效能分析。

Dalvik虛擬機器和ART原理的對比

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執行時庫有較大的不同,尤其體現在相容性上。

擴充閱讀

  • Android歷史版本-對Android所有歷史版本的介紹,包括Android版本所對應的API版本
  • 虛擬機器-一種特殊的電腦軟體,通過它可以類比出一個獨立的環境供程式執行

外部連結