Android記憶體管理

來源:互聯網
上載者:User

標籤:

首先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.