小米工程師:MIUI 6是如何優化手機內存的?

jopen 10年前發布 | 6K 次閱讀 小米

小米工程師:MIUI 6是如何優化手機內存的?

        MIUI6 發布后,大家的關注點首先集中在視覺風格改變方面。但實際上 816 當天洪鋒不僅僅是講了 MIUI6 的設計,還講了八大功能,其中就著重介紹了 MIUI 在內存優化上所做的努力。本文作者為 MIUI 內存優化項目工程師閆昊,他介紹了 MIUI6 內存優化的具體原理。

        手機操作系統不僅要好看,更要好用,還要有覆蓋盡可能多不同世代機型的普適優化能力。MIUI 6 為了讓你在使用手機的過程中更爽,做了很多優化工作,比如省電優化、內存優化、下載優化、驅動級的性能優化。

        我是內存優化項目的工程師,跟大家分享下我們在其中做的工作。

        有必要說明的是,MIUI 是高頻優化演進的系統,內存優化機制不僅僅在 MIUI 6 中搭載,更在一些機型的 V5 版本中也已加載。

        今年 3 月,我們啟動了內存優化項目組,從那時開始一直做封閉開發。啟動這個項目的一個大的背景,是我們認識到,手機的內存資源是有限的,但第三方 APP 在使用內存時的欲望是無限的。所有的應用,都恨不得調用更多接口,啟用更多服務,占用更多資源。它們的欲望,讓自己爽了,卻讓用戶堵心。尤其是對于非旗艦 配置的手機來說,內存資源一旦被占用,它正常運行起來就顯得吃力。

        從效果來看,MIUI 內存優化基本上達到了我們預期的效果。我們在內存較小的紅米系列、部分小米 2 機型上對內存作優化處理后,用戶能夠明顯感覺到手機用起來更爽了。我們還正計劃對小米 3 也啟動內存優化,因為它用 2GB 內存跑著跟小米 4 一樣的分辨率,有可以優化的空間。

        項目啟動時,我們的態度非常謹慎。我們采用的優化策略,首要一條是保證手機的穩定性,為了保證手機的穩定性,我們避免在系統進程做更多的事情, 而是通過應用進程來實現優化的策略。我們將各個內存優化的點組織起來,以 APP 為單位進行配置,根據實際使用效果,實現對 APP 的差異化優化。

        過去五個多月,我們的內存優化處理從以下四個方面著手。

小米工程師:MIUI 6是如何優化手機內存的?

        第一種策略,是釋放顯示相關的內存。這是我們針對系統 APP 采用的一種調優策略。

        圖形內容,俗稱位圖是非常占用內存的,針對位圖,我們采用異步加載的方法,將位圖內容信息和位圖的狀態信息分別進行存儲,將內容信息存儲到機身 存儲上,而把狀態信息保留在 RAM 上。當 APP 再次顯示時,不需要重新測量、布局,只在繪畫的時候再把位圖的內容信息加載回來。為了保證快速啟用后臺應用,我們在系統發出切換的時候就通知 APP 進行位圖內容信息的加載。這樣運行內存被占用的情況就得到很大的改善。

        第二種策略,是壓縮后臺內存。

        我們發現,手機后臺運行的大部分內存是不經常使用的,但由于安卓的多任務機制,它們又不能被直接釋放,于是我們對這些后臺運行的內存采用了壓縮 策略。像 ZIP 文件壓縮一樣,我們對不常使用的內存進行壓縮,現在我們能夠做到5:1 的壓縮幅度。壓縮了后臺內存,就給前臺正在使用的應用騰出了內存空間,讓前臺應用跑得更爽。

        第三種策略,是從系統底層去釋放內存。

        我們知道,現在很多 APP 的繪圖用的是硬件繪圖,硬件繪圖是運行在 GPU 上的,GPU 在做圖片合成的時候會保留一些緩存。我們修改了系統的接口,把硬件繪圖緩存釋放掉,下次需要使用的時候再進行申請,以達到壓縮內存的目的。另外我們在 JAVA 內存管理機制中,也對冗余內存進行了釋放。

        第四種策略,是優化自啟動管理。

        無論是系統應用還是第三方應用,MIUI 都對應用的自啟動進行了約束。我們對后臺應用數量、后臺進程數量和空進程數量進行管束,拉長應用自啟動的周期,禁止不必要的啟動,從而實現內存的合理利用和釋放。

        以上幾種策略,在針對具體 APP 時,都會有不同的組合,有些可能只采用一種策略,有些可能四種策略同時使用。據我們實測,在同等低內存機型中,進行過內存優化的小米設備,能比同等配置的 其他品牌機型多運行 3 個以上后臺應用——我們的設備可以運行到 12-14 個后臺應用,其他品牌則可能最多運行到第 9 個安卓系統就已經開始“殺”后臺應用了。更重要的是,為了兼顧前臺應用操作流暢性和后臺應用響應速度的平衡,我們將已經做過的內存優化策略的具體參數設計 為可配置,可以隨時進行修改。

        據我們觀察,小米是目前唯一一家具備內存優化能力的手機廠商,后臺內存壓縮技術甚至優于源生 Android。通過把各類應用的“欲望”關到一個籠子里,盡量讓他們不會“窮兇惡極”地征用內存,保證用戶在使用手機的時候感覺到“爽”,這是我們項目 組成立時的初衷,現在來看,成效是明顯的。不過由于安卓的開放性,及應用們難以填滿的欲望,我們將會持續優化,給予用戶最佳操控體驗。

來自: 雷鋒網
                    <span id="shareA4" class="fl">   

                        </span> 

</div>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!