Android記憶體管理的原理--進程管理

來源:互聯網
上載者:User

標籤:android記憶體管理   進程管理   

Android記憶體管理的原理--進程管理


Android採取了一種有別於 Linux 的進程管理原則,有別於Linux的在進程活動停止後就結束該進程,Android把這些進程都保留在記憶體中,直到系統需要更多記憶體為止。這些保留在記憶體中的進程通常情況下不會影響整體系統的運行速度,並且當使用者再次啟用這些進程時,提升了進程的啟動速度。


那Android什麼時候結束進程?結束哪個進程呢?

之前普遍的認識是Android是依據一個名為LRU(last recently used 最近使用過的程式)列表,將程式進行排序,並結束最早的進程。但實際上這裡面有更多的細節。


1.系統會對進程的重要性進行評估,並將重要性以“oom_adj”這個數值表示出來,賦予各個進程;(系統會根據“oom_adj”來判斷需要
結束哪些進程,一般來說,“oom_adj”的值越大,該進程被系統選中終止的可能就越高)

2.前景程式的“oom_adj”值為0,這意味著它不會被系統終止,一旦它不可訪問後,會獲得個更高的“oom_adj”,作者推測“oom_adj”
的值是根據軟體在LRU列表中的位置所決定的;

3.Android不同於Linux,有一套自己獨特的進程管理模組,這個模組有更強的可定製性,可根據“oom_adj”值的範圍來決定進程管理原則,比如可以設定“當記憶體小於X時,結束“oom_adj”大於Y的進程”。這給了進程管理指令碼的編寫以更多的選擇。

4.Android將進程分為六大類:

一、前台進程(foreground):目前正在螢幕上顯示的進程和一些系統進程。舉例來說,Dialer Storage,Google Search等系統進程就是前台進程;再舉例來說,當你運行一個程式,如瀏覽器,當瀏覽器介面在前台顯示時,瀏覽器屬於前台進程(foreground),但一旦你按home回到主介面,瀏覽器就變成了背景程式(background)。我們最不希望終止的進程就是前台進程。

二、可見進程(visible):可見進程是一些不再前台,但使用者依然可見的進程,舉個例來說:widget、IME等,都屬於visible。這部分進程雖然不在前台,但與我們的使用也密切相關,我們也不希望它們被終止(你肯定不希望時鐘、天氣,新聞等widget被終止,那它們將無法同步,你也不希望IME被終止,否則你每次輸入時都需要重新啟動IME)

三、次要服務(secondary server):目前正在啟動並執行一些服務(主要服務,如撥號等,是不可能被進程管理終止的,故這裡只談次要服務),舉例來說:Google企業套件,Gmail內部儲存,連絡人內部儲存等。這部分服務雖然屬於次要服務,但很一些系統功能依然息息相關,我們時常需要用到它們,所以也太希望他們被終止

四、後台進程(background):就是我們通常意義上理解的啟動後被切換到背景進程,如瀏覽器,閱讀器等。當程式顯示在螢幕上時,他所啟動並執行進程即為前台進程(foreground),一旦我們按home返回主介面(注意是按home,不是按back),程式就駐留在後台,成為後台進程(background)。後台進程的管理原則有多種:有較為積極的方式,一旦程式到達後台立即終止,這種方式會提高程式的運行速度,但無法加速程式的再次啟動;也有較消極的方式,儘可能多的保留背景程式,雖然可能會影響到單個程式的運行速度,但在再次啟動已啟動的程式時,速度會有所提升。這裡就需要使用者根據自己的使用習慣找到一個平衡點

五、內容提供者(content provider):沒有程式實體,進提供內容供別的程式去用的,比如日曆供應者,郵件供應者等。在終止進程時,這類程式應該有較高的優先權

六、空進程(empty):沒有任何東西在內啟動並執行進程,有些程式,比如BTE,在程式退出後,依然會在進程中駐留一個空進程,這個進程裡沒有任何資料在運行,作用往往是提高該程式下次的啟動速度或者記錄程式的一些曆史資訊。這部分進程無疑是應該最先終止的。

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.