巧婦能為少米之炊(1)——Android下小記憶體下的生存之道

來源:互聯網
上載者:User

標籤:做了   linux核心   習慣   釋放   定時   androi   sam   manage   電量   

常常聽到身邊用安卓的朋友抱怨手機卡頓,記憶體動不動就快沒了。而Google聲稱在512M的記憶體下也能流暢執行Android 4.4。究竟它做了什嗎?

總結一下它主要做了四件事:

1.最佳化核心,使用ActivityManager來降低直接記憶體回收

2.最佳化LMK(low memory killer)的臨界值

3.使能KSM(Kernel Samepage Merging)

4.使能ZRAM取代SWAP分區

這幾個事情,個人僅僅有第三和第四件事情看起來比較靠譜。


 最佳化核心的事情:

摘自Google官方網站的英文介紹,翻譯過來的意思大概是: 改動臨界值,降低直接記憶體回收。由於直接記憶體回收會須要額外的IO操作,耗時較大。利用空暇的時間添加後台回收。

眾所周知,對EMMC讀寫的時候,是非常耗費時間的,由於記憶體的讀寫速度要高出EMMC讀寫速度幾個量級,因此降低與EMMC互動的確能夠節省非常多時間。降低卡頓,可是每一個人的使用習慣不同。怎麼要改動演算法使得降低直接記憶體回收呢?我不知道,可是我認為這個最佳化等於說廢話。究竟咋樣,使用過後才知道。


關於LMK:

Linux核心中。用OOM來回收記憶體,即當記憶體不夠的時候。調用一種演算法,把那些不用的,優先順序別比較低的。都給釋放掉,這樣騰出一部分記憶體,於是記憶體就變大了,而Android中,對這個OOM機製做了一個最佳化。它就叫LMK。

它覺得。假設等到OOM發生的時候,記憶體已經很不足了,這個時候再去釋放記憶體,系統的回應時間會變的很長,造成很差的使用者體驗,於是LMK做了一個改變。定時檢查空暇記憶體。當少於某個伐值的時候,就殺掉一些進程。騰出一些空間。這樣保證系統中一直有較大的空暇記憶體。能夠降低卡頓。有道理,後面的章節中會細緻講訴LMK。


KSM:

這個東西早在2009年的時候就出來了。可是反映比較平淡,原因是:KSM合并同樣頁面。即合并副本記憶體。能夠節省不必要的記憶體。但而採用此方法,會添加耗電量,不得已的時候才會開啟。


什麼是ZRAM:

說的明確一點,ZRAM就是SWAP的一個改進。一般發生SWAP的時候,是把要置換出去的資料存到外部磁碟上(手機就是EMMC,電腦就是硬碟),這樣會減少效率,於是聰明的開發人員們相處一個方法,那就是把要置換出去的東西壓縮還放在記憶體中,這樣消耗的僅僅是解壓時間,而這個時間遠遠小於與外部磁碟互動所消耗的時間。

是個比較靠譜的方式,以下的章節中,將具體講訴它的調用過程以及怎樣開啟。


於是LMK,KSM和ZRAM是筆者覺得比較靠譜的方式,以下的幾個章節。將分別講訴他們怎樣被使能。以及詳細的調用過程和原理。

巧婦能為少米之炊(1)——Android下小記憶體下的生存之道

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.