對于“手機內(nèi)存用一段時間就變小,必須重啟才能恢復(fù)”迷茫的機油_第1頁
對于“手機內(nèi)存用一段時間就變小,必須重啟才能恢復(fù)”迷茫的機油_第2頁
對于“手機內(nèi)存用一段時間就變小,必須重啟才能恢復(fù)”迷茫的機油_第3頁
對于“手機內(nèi)存用一段時間就變小,必須重啟才能恢復(fù)”迷茫的機油_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、對于“手機內(nèi)存用一段時間就變小,必須重啟才能恢復(fù)”迷茫的機油進來看看吧 首先聲明 這是我轉(zhuǎn)載的 有很多機油都表示,自己的機子開機內(nèi)存很大,用一會怎么就變小了,怎么有很多程序在后臺關(guān)都關(guān)不了啦。 接下來就講講安卓手機的一些事情。 首先大家要知道Android系統(tǒng)是基于Linux 2.6內(nèi)核開發(fā)的開源操作系統(tǒng)。linux系統(tǒng)的內(nèi)存管理有其獨特的動態(tài)存儲管理機制。不過Android系統(tǒng)對Linux的內(nèi)存管理機制進行了優(yōu)化,Linux系統(tǒng)會在進程活動停止后就結(jié)束該進程,而Android把這些進程都保留在內(nèi)存中,直到系統(tǒng)需要更多內(nèi)存為止。這些保留在內(nèi)存中的進程通常情況下不會影響整體系統(tǒng)的運行速度,并且當(dāng)

2、用戶再次激活這些進程時,提升了進程的啟動速度。 如果你懂java,就會更容易理解Android系統(tǒng)的內(nèi)存管理機制。與java的垃圾回收機制類似,系統(tǒng)有一個規(guī)則來回收內(nèi)存。進行內(nèi)存調(diào)度有個閾值,只有低于這個值系統(tǒng)才會按一個列表來關(guān)閉用戶不需要的東西。Android系統(tǒng)有六類進程:前臺進程、可見進程、次要服務(wù)、后臺進程、內(nèi)容供應(yīng)節(jié)點、空進程。對于高手而言可以用MinFreeManager之類的軟件進行進程管理,分別為六類進程設(shè)定不同的閾值來操縱系統(tǒng)的內(nèi)存分配機制。不過對于一般用戶而言,Android系統(tǒng)默認的分配機制已經(jīng)可以滿足使用需要,因此也不需要再去調(diào)整。 對于一些內(nèi)存很低的低端Android

3、機而言,系統(tǒng)默認的內(nèi)存分配機制無法實現(xiàn)很完善的內(nèi)存調(diào)配。所以在運行大型游戲時需要先清理一下內(nèi)存。就拿現(xiàn)在的街機摩托羅拉defy來講吧,512m的總內(nèi)存和幾十m的空余內(nèi)存已經(jīng)可以充分的滿足系統(tǒng)自動調(diào)配的需要,因此完全沒有必要老去殺進程、清內(nèi)存。 有些機油都反應(yīng)說后臺掛著程序很費電,事實上Android的應(yīng)用在被切換到后臺時,它其實已經(jīng)被暫停了,并不會消耗cpu資源,只保留了運行狀態(tài)。至于QQ、音樂播放之類的程序可以在后臺運行,是因為這些程序在后臺開啟了服務(wù),而服務(wù)可以后臺運行,所以沒有帶服務(wù)的應(yīng)用在后臺是完全不耗電的,沒有必要關(guān)閉。這種設(shè)計本來就是一個非常好的設(shè)計,下次啟動程序時,會更快,因為不

4、需要讀取界面資源。 Android系統(tǒng)這樣的設(shè)計不僅非常適合移動終端的需要,而且減少了系統(tǒng)崩潰的可能,確保了系統(tǒng)的穩(wěn)定性。老想著清理內(nèi)存的同學(xué)完全是因為被塞班或者Windows毒害太深,事實上,經(jīng)常用Taskiller之類的軟件關(guān)閉后臺所有進程,很容易造成系統(tǒng)的不穩(wěn)定。很多時候出現(xiàn)問題,只要重啟就能解決,其原因也在于此。 說了這里,總結(jié)起來很簡單,一些diy的編程高手,一般都會自己去 操縱系統(tǒng)內(nèi)存分配的閾值,而普通用戶則是想怎么用就怎么用,完全不用去鳥剩余內(nèi)存的問題,那些內(nèi)存清理的程序完全可以扔到一邊了。 接來下再給大家講一些小技巧: 1.按home退出,程序保留狀態(tài)為后臺進程;按返回鍵退出,

5、程序保留狀態(tài)為空進程。空進程的oom_adj評值高于后臺進程,更容易被系統(tǒng)清理。所以推薦用返回鍵退出。 2.UC、憤怒小鳥、都市賽車之類程序本身提供關(guān)閉功能的,還是盡量主動關(guān)閉。瀏覽器、電子市場、opera mini等不提供關(guān)閉功能的,直接返回鍵退出就行。 為什么我剛刷完rom,殺下進程運行內(nèi)存有65MB,以后就越來越少了呢? 為什么UC瀏覽器、QQ等程序掛到后臺運行再重新回到前臺后就掉線呢? 為什么每次打開進程管理器,可用內(nèi)存總是在24MB左右呢? 先來看下android的內(nèi)存管理方式吧:(沒耐心的直接看紅字部分) Android采取了一種有別于Linux的進程管理策略,有別于Linux的在

6、進程活動停止后就結(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é)束哪些進程,一般

7、來說,“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):目前正在屏幕上顯

8、示的進程和一些系統(tǒng)進程。舉例來說,Dialer Storage,Google Search等系統(tǒng)進程就是前臺進程;再舉例來說,當(dāng)你運行一個程序,如瀏覽器,當(dāng)瀏覽器界面在前臺顯示時,瀏覽器屬于前臺進程(foreground),但一旦你按home回到主界面,瀏覽器就變成了后臺程序(background)。我們最不希望終止的進程就是 前臺進程。 2.可見進程(visible):可見進程是一些不再前臺,但用戶依然可見的進程,舉個例來說:widget、輸入法等,都屬于visible。這部分進程雖然不在前臺,但與我們的使用也密切相關(guān),我們也不希望它們被終止(你肯定不希望時鐘、天氣,新聞等widget被終止

9、,那它們將無法同步,你也不希望輸入法被終止,否則你每次輸入時都需要重新啟動輸入法) 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)程序顯示在屏幕上時,他所運行的

10、進程即為前臺進程(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)會自動按照打

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論