- 5.0以上android強制用art虛拟機
- oat檔案在安裝過程中dex2oat系統工具将apk所有dex檔案轉成oat檔案放在/data/dalvik-cache/arm目錄下字尾還是以dex/odex結尾
- Android N引入了一種包含編譯、解釋和JIT(Just In Time)的混合運作時,以便在安裝時間、記憶體占用、電池消耗和性能之間獲得最好的折衷
- 當使用者安裝App的時候,不再進行預編譯了,這個和KitKat的時候一樣。當使用者安裝之後立即使用該App,仍然使用JIT編譯模式來執行App,但是同時會生成一個離線的 profile 檔案,這個 profile 檔案會記錄JIT運作時的所有 hot code(熱點代碼)資訊。然後在未來的某個時間點,Android Framework 會基于這個 profile 檔案來啟動一個預編譯行為,它隻便于記錄的熱點代碼。
在 JIT 階段,它帶來的好處:
快速安裝
系統快速更新
在 AOT 階段,它帶來的好處:
快速啟動,更好的運作性能
低消耗:CPU,儲存空間,電量…
ART混合編譯模式
一些使用者隻使用App中的一部分功能,隻有這些被頻繁使用的部分(這個功能涉及到的代碼)才值得被編譯成 native code。
在 JIT 階段,我們可以很容易的找到經常被使用的代碼。
使用 AOT 來加快這些經常使用的用例。
避免在一些基本不适用的代碼上花費開銷。
AOT+JIT混合編譯