Android記憶體管理機制

來源:互聯網
上載者:User

(1)Android系統是基於Linux 2.6核心開發的開源作業系統,而linux系統的記憶體管理有其獨特的動態儲存裝置管理機制。不過Android系統對Linux的記憶體管理機制進行了最佳化,Linux系統會在進程活動停止後就結束該進程,而Android把這些進程都保留在記憶體中,直到系統需要更多記憶體為止。這些保留在記憶體中的進程通常情況下不會影響整體系統的運行速度,並且當使用者再次啟用這些進程時,提升了進程的啟動速度。
 
(2)Android的Low Memory killer是在標準的linux kernel的OOM基礎上修改而來的一種記憶體管理機制,當系統記憶體不足時,殺死Bad進程釋放其記憶體,Bad進行的選擇標準有2個:oom_adj和佔用記憶體的大小,oom_adj代表進程的優先順序,數值越大,優先順序越高,對應每個oom_adj都有一個空閑記憶體的閥值。系統會對進程的重要性進行評估,並將重要性以“oom_adj”這個數值表示出來,賦予各個進程。Android Kernel每隔一段時間會檢查當前記憶體是否低於某個閥值,如果是,則殺死oom_adj最大的Bad進程,如果有2個以上的Bad進程oom_adj相同,則殺死其中佔用記憶體最多的進行
 
(3)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值,這個值越小,程式越重要,被殺的可能性越低。

(4)除了上述程式重要性分類之外,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。
(5) alter minfree改的是什麼呢,上面這張對應表是由兩個檔案組成的:
/sys/module/lowmemorykiller/parameters/adj和/sys/module/lowmemorykiller/parameters/minfree。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.