安卓Android的內(nèi)存管理原理解析 不必手動關(guān)閉進程!
Android采取了一種有別于Linux的進程管理策略,有別于Linux的在進程活動停止后就結(jié)束該進程,Android把這些進程都保留在內(nèi)存中,直到系統(tǒng)需要更多內(nèi)存為止。這些保留在內(nèi)存中的進程通常情況下不會影響整體系統(tǒng)的運行速度,并且當(dāng)用戶再次激活這些進程時,提升了進程的啟動速度。
那Android什么時候結(jié)束進程?結(jié)束哪個進程呢?之前普遍的認識是Android是依據(jù)一個名為LRU(last recently used 最近使用過的程序)列表,將程序進行排序,并結(jié)束最早的進程。
其實安卓的內(nèi)存管理機制是這樣的,如下:
1.系統(tǒng)會對進程的重要性進行評估,并將重要性以“oom_adj”這個數(shù)值表示出來,賦予各個進程;(系統(tǒng)會根據(jù)“oom_adj”來判斷需要結(jié)束哪些進程,一般來說,“oom_adj”的值越大,該進程被系統(tǒng)選中終止的可能就越高)
2.前臺程序的“oom_adj”值為0,這意味著它不會被系統(tǒng)終止,一旦它不可訪問后,會獲得個更高的“oom_adj”,我們推測“oom_adj”的值是根據(jù)軟件在LRU列表中的位置所決定的;
3.Android不同于Linux,有一套自己獨特的進程管理模塊,這個模塊有更強的可定制性,可根據(jù)“oom_adj”值的范圍來決定進程管理策略,比如可以設(shè)定“當(dāng)內(nèi)存小于X時,結(jié)束“oom_adj”大于Y的進程”。這給了進程管理腳本的編寫以更多的選擇。
Android將進程分為六大類:
1.前臺進程(foreground):目前正在屏幕上顯示的進程和一些系統(tǒng)進程。舉例來說,Dialer Storage,Google Search等系統(tǒng)進程就是前臺進程;再舉例來說,當(dāng)你運行一個程序,如瀏覽器,當(dāng)瀏覽器界面在前臺顯示時,瀏覽器屬于前臺進程(foreground),但一旦你按home回到主界面,瀏覽器就變成了后臺程序(background)。我們最不希望終止的進程就是前臺進程。
2.可見進程(visible):可見進程是一些不再前臺,但用戶依然可見的進程,舉個例來說:widget、輸入法等,都屬于visible。這部分進程雖然不在前臺,但與我們的使用也密切相關(guān),我們也不希望它們被終止(你肯定不希望時鐘、天氣,新聞等widget被終止,那它們將無法同步,你也不希望輸入法被終止,否則你每次輸入時都需要重新啟動輸入法)
3.次要服務(wù)(secondary server):目前正在運行的一些服務(wù)(主要服務(wù),如撥號等,是不可能被進程管理終止的,故這里只談次要服務(wù)),舉例來說:谷歌企業(yè)套件,Gmail內(nèi)部存儲,聯(lián)系人內(nèi)部存儲等。這部分服務(wù)雖然屬于次要服務(wù),但很一些系統(tǒng)功能依然息息相關(guān),我們時常需要用到它們,所以也太希望他們被終止
4.后臺進程(hidden):雖然作者用了hidden這個詞,但實際即是后臺進程(background),就是我們通常意義上理解的啟動后被切換到后臺的進程,如瀏覽器,閱讀器等。當(dāng)程序顯示在屏幕上時,他所運行的進程即為前臺進程(foreground),一旦我們按home返回主界面(注意是按home,不是按back),程序就駐留在后臺,成為后臺進程(background)。后臺進程的管理策略有多種:有較為積極的方式,一旦程序到達后臺立即終止,這種方式會提高程序的運行速度,但無法加速程序的再次啟動;也有較消極的方式,盡可能多的保留后臺程序,雖然可能會影響到單個程序的運行速度,但在再次啟動已啟動的程序時,速度會有所提升。這里就需要用戶根據(jù)自己的使用習(xí)慣找到一個平衡點
5.內(nèi)容供應(yīng)節(jié)點(content provider):沒有程序?qū)嶓w,進提供內(nèi)容供別的程序去用的,比如日歷供應(yīng)節(jié)點,郵件供應(yīng)節(jié)點等。在終止進程時,這類程序應(yīng)該有較高的優(yōu)先權(quán)
6.空進程(empty):沒有任何東西在內(nèi)運行的進程,有些程序,比如BTE,在程序退出后,依然會在進程中駐留一個空進程,這個進程里沒有任何數(shù)據(jù)在運行,作用往往是提高該程序下次的啟動速度或者記錄程序的一些歷史信息。這部分進程無疑是應(yīng)該最先終止的。
簡單來說,就是選擇退出程序時,并不是完全退出程序,該程序仍然會在后臺駐留一個進程,以便下次更快的打開。那什么時候完全關(guān)閉該程序呢?這取決于該程序的類型(就是上面講的那幾個類型)。系統(tǒng)會給每個類型的程序一個內(nèi)存值閾(閥門),也就是說當(dāng)運行內(nèi)存低于某個值時,系統(tǒng)會自動按照打開的先后順序來關(guān)閉該類型的程序。例如,當(dāng)運存小于24MB時,系統(tǒng)才會自動關(guān)閉空進程這一類型的程序,釋放出更多的內(nèi)存來供新程序使用,已保證新開程序的正常運行。
綜上所述,我們不難看出,很多時候我們沒必要過多的區(qū)關(guān)注系統(tǒng)的空閑內(nèi)存(RAM)是多少,也沒必要特意的去殺掉后臺程序,因為系統(tǒng)會自動分配內(nèi)存,以保證新程序的運行,特殊情況除外,比如你馬上就要開一個非常大的游戲,需要更多的內(nèi)存,這個時候就可以手動殺掉一些后臺程序,以保證游戲的流暢。
HTC Magic(G2)刷機包下載:http://www.sld007.cn/romlist/9_0_0_1_10
HTC Magic(G2)刷機教程:http://www.sld007.cn/phone/9_4.html
熱門刷機包top10
- HTC Magic G2 ROM 電池百分比 美化 精簡 終結(jié)修改版 2.2刷機包
- HTC Magic G2 刷機包-HTC Magic_2.3.5透明版 精簡 優(yōu)化
- HTC G2 刷機包 基于CM7.2 移植的4.0界面 省電順滑 全新體驗
- HTC Magic G2 刷機包-完美演繹 安卓2.3.7刷機ROM包下載
- HTC Magic G2 刷機包-HTC G2【樂蛙ROM-第44期】12.08.31版本發(fā)布
- HTC Magic G2 刷機包-HTC Magic_2.3.5 精確電量1% 卡梅隆 第二版 ROM
- HTC Magic G2 刷機包-Hiapk ROM 2.3.4極致精簡Bate1~ 系統(tǒng)精簡 流暢
- [Stable] Cyanogen團隊針對HTC Magic G2定制ROM
- HTC Magic G2 ROM CM7.2 2.3.7精簡版刷機包 省電 流暢
- HTC Magic G2 刷機包-HTC Hintay Magic 0.21 2.3.3 精簡 快速 穩(wěn)定
熱門刷機教程top10
- 新專利曝光 魅族腰圓鍵將集成LED燈?
- HTC Butterfly S是如何完美ROOT? 簡單易學(xué)圖文教程
- HTC Magic (G2)獲取Root權(quán)限詳細圖文教程
- HTC G2 Magic 獲取root權(quán)限教程
- HTC G2 Magic獲取ROOT權(quán)限圖文教程 驅(qū)動等文件下載
- HTC G2詳細刷機教程-附視頻教程
- HTC G2 Magic 刷官方sense手機金卡制作教程
- HTC G2 Magic 獲取root權(quán)限教程 SDK下載
- 安卓Android的內(nèi)存管理原理解析 不必手動關(guān)閉進程!
- HTC Magic(G2)獲取ROOT權(quán)限詳細圖文教程附工具下載
熱門ROM資訊top10
熱門手機刷機包
- 基米 A800刷機包
- 藍博興 C930刷機包
- 奧克斯 930A刷機包
- Google Nexus S刷機包
- HTC Dream(G1)刷機包
- 三星 J100Y刷機包
- 天語 Touch 3C刷機包
- 波導(dǎo) BIRD A06刷機包
- 華為 MLA-TL10刷機包
- HTC Thunderbolt刷機包
- IHD IHD958刷機包
- 三星 Galaxy Note 4 (N910U)刷機包
- 卓樂 109刷機包
- 天語 Kis 2w刷機包
- 三星 GALAXY Ace(S5838)刷機包
- 歐新 U8刷機包
- 酷比A3刷機包
- 百立豐 T708刷機包
- 步步高 VIVO Xshot (移動版)刷機包
- 中興 Q501T刷機包
熱門刷機包top10
- HTC Magic G2 ROM 電池百分比 美化 精簡 終結(jié)修改版 2.2刷機包
- HTC Magic G2 刷機包-HTC Magic_2.3.5透明版 精簡 優(yōu)化
- HTC G2 刷機包 基于CM7.2 移植的4.0界面 省電順滑 全新體驗
- HTC Magic G2 刷機包-完美演繹 安卓2.3.7刷機ROM包下載
- HTC Magic G2 刷機包-HTC G2【樂蛙ROM-第44期】12.08.31版本發(fā)布
- HTC Magic G2 刷機包-HTC Magic_2.3.5 精確電量1% 卡梅隆 第二版 ROM
- HTC Magic G2 刷機包-Hiapk ROM 2.3.4極致精簡Bate1~ 系統(tǒng)精簡 流暢
- [Stable] Cyanogen團隊針對HTC Magic G2定制ROM
- HTC Magic G2 ROM CM7.2 2.3.7精簡版刷機包 省電 流暢
- HTC Magic G2 刷機包-HTC Hintay Magic 0.21 2.3.3 精簡 快速 穩(wěn)定
熱門刷機教程top10
- 新專利曝光 魅族腰圓鍵將集成LED燈?
- HTC Butterfly S是如何完美ROOT? 簡單易學(xué)圖文教程
- HTC Magic (G2)獲取Root權(quán)限詳細圖文教程
- HTC G2 Magic 獲取root權(quán)限教程
- HTC G2 Magic獲取ROOT權(quán)限圖文教程 驅(qū)動等文件下載
- HTC G2詳細刷機教程-附視頻教程
- HTC G2 Magic 刷官方sense手機金卡制作教程
- HTC G2 Magic 獲取root權(quán)限教程 SDK下載
- 安卓Android的內(nèi)存管理原理解析 不必手動關(guān)閉進程!
- HTC Magic(G2)獲取ROOT權(quán)限詳細圖文教程附工具下載
熱門ROM資訊top10
熱門手機刷機包
- 基米 A800刷機包
- 藍博興 C930刷機包
- 奧克斯 930A刷機包
- Google Nexus S刷機包
- HTC Dream(G1)刷機包
- 三星 J100Y刷機包
- 天語 Touch 3C刷機包
- 波導(dǎo) BIRD A06刷機包
- 華為 MLA-TL10刷機包
- HTC Thunderbolt刷機包
- IHD IHD958刷機包
- 三星 Galaxy Note 4 (N910U)刷機包
- 卓樂 109刷機包
- 天語 Kis 2w刷機包
- 三星 GALAXY Ace(S5838)刷機包
- 歐新 U8刷機包
- 酷比A3刷機包
- 百立豐 T708刷機包
- 步步高 VIVO Xshot (移動版)刷機包
- 中興 Q501T刷機包