Android記憶體管理

來源:互聯網
上載者:User

標籤:android   style   http   color   os   ar   使用   for   sp   

首先Android記憶體管理機制相當複雜,想要講清楚比較困難;其次對於絕大多數使用者來說,只關心記憶體夠不夠用,至於記憶體如何管理的這種技術細節,不是使用者需要去考慮的,寫這樣一個專題有沒有意義?畢竟我們是用手機,不是來研究手機的。最後的顧慮是這個專題會不會太技術化了,絕大部分使用者不會看或者說缺乏相應的背景。但是有一種激勵促使著我去寫這樣一個專題,一直以來,MIUI團隊在與使用者互動的過程中也同時在向使用者學習,你們的一些建議或者點子總會給我們啟示,這個專題中我相信你們同樣能給以啟示。雖然說記憶體管理是一個很技術的話題,但我們仍可以從使用者的角度去看這些問題,記憶體管理是如何影響我們使用手機,作為使用者,我們能做些什麼。我會儘力使這樣一個專題不那麼技術化,但是仍舊免不了會有一些技術術語以及實現相關的討論,如果有興趣,我們就一起看看吧。

我們首先從使用者發的一個文章開始:“傳說中的神器,讓你的ms時刻保持空餘記憶體”,在這個文章中提到了"alter minfree"選項,在這一篇中我們就講講這個是什麼,它是如何工作的。

(1)Android是一個多任務系統,也就是說可以同時運行多個程式,這個大家應該很熟悉。一般來說,啟動運行一個程式是有一定的時間開銷的,因此為了加快運行速度,當你退出一個程式時,Android並不會立即殺掉它,這樣下次再運行該程式時,可以很快的啟動。隨著系統中保留的程式越來越多,記憶體肯定會出現不足,這個時候Android系統開始揮舞屠刀殺程式。這裡就有一個很明顯的問題,殺誰?

(2)Android系統中殺程式的這個劊子手被稱作"LowMemory Killer",它是在Linux核心中實現的。這裡它實現了一個機制,由程式的重要性來決定殺誰。通俗來說,誰不幹活,先殺誰。Android將程式的重要性分成以下幾類,按照重要性依次降低的順序:

名稱 oom_adj 解釋
FOREGROUD_APP 0 前景程式,可以理解為你正在使用的程式
VISIBLE_APP 1 使用者可見的程式
SECONDARY_SERVER 2 後台服務,比如說QQ會在後台運行服務
HOME_APP 4 HOME,就是主介面
HIDDEN_APP 7 被隱藏的程式
CONTENT_PROVIDER 14 內容提供者,
EMPTY_APP
15 
空程式,既不提供服務,也不提供內容

其中每個程式都會有一個oom_adj值,這個值越小,程式越重要,被殺的可能性越低。

(3)除了上述程式重要性分類之外,Android系統還維護著另外一張表,這張表是一個對應關係,以N1為例:
oom_adj 記憶體警戒值( 以4K為單位)
0 1536
1 2048
2 4096
7 5120
14 5632
15 6144
這個表是定義了一個對應關係,每一個警戒值對應了一個重要性值,當系統的可用記憶體低於某個警戒值時,就殺掉所有大於該警戒值對應的重要性值的程式。比如說,當可用記憶體小於6144 * 4K = 24MB時,開始殺所有的EMPTY_APP,當可用記憶體小於5632 * 4K = 22MB時,開始殺所有
的CONTENT_PROVIDER和EMPTY_APP。


(4) alter minfree改的是什麼呢,上面這張對應表是由兩個檔案組成的:
/sys/module/lowmemorykiller/parameters/adj和/sys/module/lowmemorykiller/parameters/minfree。

alter minfreee就是修改/sys/module/lowmemorykiller/parameters/minfree這個檔案的,舉例來說,如果把最後一項改為32 * 1024,那麼當可用記憶體小於128MB是,就開始殺所有的EMPTY_APP。

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.