【新聞內容】Android 4.4 KitKat裡最引人關注的變化之一就是新的Android運行時ART,但因為還是試驗性質的,Google並未做大張旗鼓的宣傳,相關介紹也很少,只說它有望取代使用許久的Dalvik虛擬機。
AnandTech近日詳細考察了Nexus 5,其中就對ART模式做了一些介紹和測試。
在Android設備上,Dalvik虛擬機是運行Java語言編寫應用的必需步驟,正是它將應用編譯為字節碼(ByteCode),然後再轉換成dex(Dalvik可執行格式),最終交給Dalvik虛擬機來運行。
通過這一過程,Android應用可以很好地適應各種形形色色的設備,但也因為中間的轉換過程降低了執行效率。
Android 2.2的時候引入了即時編譯器(JIT),大大提高了部分應用的執行效率。此後雖然不再有明顯的性能提升,但是Google和廠商們一直都在優化Dalvik。事實上,如果你執行了Dalvik緩存清理,就會看到“Android正在更新”(Android is upgrading)的提示,此時幕後就正在對dex文件進行深入優化,同時重建Dalvik緩存分區。
ART拋棄了JIT而轉向AOT(預先編譯)模式,會在啟動過程中同樣的“Android正在更新”時開始生效,只不過需要更長時間。
如果查看這個時候的系統日誌,就會發現新的ART文件格式“dex2oat”正在運行、編譯成文件、建立Dalvik緩存。
I/art ( 615): DexFile_isDexOptNeeded cache file /data/dalvik-cache/data@[email protected]–[email protected] does not exist for /data/app/com.google .android.apps.maps–2.apk
I/PackageManager( 615): Running dexopt on: com.google.android.apps.maps
I/dex2oat ( 951): dex2oat: /data/dalvik-cache/data@[email protected]–[email protected]
W/dex2oat ( 951): Compilation of com.google.zxing.gas[] com.google.zxing.gasf() took 126.362083ms
ART目前兼容ARMv7、x86、MIPS三種處理器架構,還不支持64位的ARMv8,而且從字節碼到原生代碼的轉換暫時僅支持AOT編譯,JIT模式得以後再說。這更加證明了ART現在的試驗性質。
底層虛擬機的變化對Android應用的性能、耗電量影響都是巨大的,ART又有什麼變化呢?
| |
|