垃圾回收
Android虛擬機是自動內存管理。優點是,開發者無需擔心內存管理,缺點是,開發者失去了控制權,依賴于系統本身的機制。Dalvik的垃圾回收機制是造成系統卡頓的原因之一。在Dalvik虛擬機下,啟動垃圾回收機制會造成兩次暫停(一次在遍歷階段,一次在標記階段)。所謂暫停,就是應用的所有線程都不再執行。如果暫停時間過長,應用渲染中就會出現掉幀。用戶體驗上來說,就是應用運行的時候出現卡頓。
Google宣稱,Neuxs 5的平均暫停時間是54ms,結果就是,每次垃圾回收啟動,平均掉幀是4幀。如果應用編寫的不好,情況會更加糟糕。Anandtech測試了FIFA游戲。Dalvik環境下,啟動應用的幾秒內,垃圾回收啟動9次,應用暫停時間總和603ms,總共掉幀是214幀。在ART下,情況有了極大改善。同樣時間里,應用暫停時間總和是12.364ms(4次前臺垃圾回收,2次后臺垃圾回收),總共掉幀是63幀。
ART能夠做到這一點,是因為應用本身做了垃圾回收的一些工作。垃圾回收啟動后,不再是兩次暫停,而是一次暫停。在遍歷階段,應用不需要暫停,而標記階段的暫停時間也大大縮短,因為Google使用了一種新技術(packard pre-cleaning),在暫停前就做了許多事情,減輕了暫停時的工作量。Google承諾說,他們已經把平均暫停時間降到了3ms,遠遠超過Dalvik的垃圾回收。
與此同時,Google還改進了內存分配系統,把分配速度加快了10倍。垃圾回收算法也進行了修改,以增強用戶體驗,避免應用被打斷。
64位支持
ART支持64位系統,這會帶來性能上的提升,加密能力的大幅改進,同時保持與現有32位應用的兼容性。與蘋果不同的是,Google使用了指針壓縮,以避免轉換到64位后,空間占用大幅增加,其虛擬機仍然是32位指針。
Google宣稱,現有Play Store上應用中,85%都可以轉移到64位,剩下的15%有原生代碼,需要重新編譯。總的來說,轉移到64位應該會在短時間內完成。
總結
從許多方面來說,Google兌現了其提升性能的承諾,解決了困擾Android的諸多問題。Android的一些致命弱點,原因在于非原生應用和自動內存管理系統,ART在這些方面做出了大量改進。總之,在應用的流暢度和性能方面,Android終于可以與iOS一決高下了。
評論