查看完整版本: Android手機需要清理內存嗎?
頁: [1]

yalehk 發表於 2015-12-13 12:25 PM

Android手機需要清理內存嗎?

我知道,對於很多人而言,尤其是那些有強迫症者,這是個然並卵的命題,但是在我們周圍,還有很多這樣的智能手機用戶:怎麼這個手機3G內存,空閒的也只有600MB呢?以前那個2G內存的手機都有800MB的空閒,我要一鍵清理內存,我要定時清理內存……
清理與加速,是手機助手們吹噓的主要功能
像我們這些在Windows陪伴下成長起來的玩家,“內存不足”是留存在心底揮之不去的陰影,即便到了今天,到了Android系統,這個陰影依舊。實際上Android有著與Windows完全不一樣的內存管理機制,Windows上的那一套,在這兒並不是行之有效的。Android中可用內存只是個沒意義的數字在Windows中,可用內存是越多越好,但在Android中,完全不必在意這個數據。在下圖中,有著3GB內存的某手機,實一加手機X的內存使用狀況(內存3GB可用的只有81MB了)
Windows中只有需要用到內存時才會為程序分配內存,一旦這個程序被關閉,分配的內存也就釋放出來成為新的可用內存。然而絕大多數Android應用都沒有退出的菜單設計,這些運行過的應用無非是從前台轉入到後台,大多數依舊保留在內存中並不會也不需要主動釋放,這樣下次再運行該應用時,可以更快的啟動。無論手機的物理內存有多大,Android都能將其充分利用,將需要用到(包括之前用過的)的數據從硬盤讀入到內存,利用內存的高速保證系統的數據訪問性能,也就是說,可用內存越小,內存的利用率就更高,其中的數據就越多,數據訪問的命中率就越高,系統也就越快。如果還有人和你說手機用不了4GB這麼的大內存,那隻是廠商的噱頭而已,你完全可以鄙視再教育之。你可能會問,當打開的應用越來越多,佔用的內存總會爆滿的,那怎麼辦呢?該出手時就出手,Android有著優秀的內存回收機制在上面舉例中,3GB內存的手機只有81MB的可用內存了,如果此時打開需要256MB內存的“騰訊視頻”,會提示“內存不足”嗎?答案是不會的。當內存不足時,內存回收機制就開始起作用了
實際上,作為Android的開發語言Java沒有提供任何操作來釋放內存(這也是與iOS很大的不同點),是通過系統的內存回收機制來進行管理。Android使用了一個名為Low Memory Killer(LMK)的機制來管理內存,當內存出現不足時,LMK就開始揮舞屠刀殺掉一些進程,那麼問題來了,殺誰?說到這兒,必須多費點筆墨。Android會對進程的重要性進行評估,以oom_adj來表示,oom_adj的值越小,則重要性越高,oom_adj的值越大,該進程被系統選中殺掉的可能性越高,當oom_adj值為0,這意味著它永遠不會被系統終止。Android有一套自己獨特的進程管理,比如可以設定“當內存小於22M時,結束oom_adj大於14的進程”這樣的策略,可以看到oom_adj非常重要,關乎進程的死生命運。Android默認的進程管理策略
像上表描述的那樣,在默認策略中,當內存低於24MB(6144*4K)時,LMK就會殺掉所有oom_adj為15的進程(即空進程),這個警戒值可以人為修改,一般情況下也沒必要去改變它。為了更好的評估進程的重要性,Android將進程分為六類,如下所述:前台進程(foreground):oom_adj=0,指正在當前屏幕上顯示的進程和一些系統進程,一旦你回到主界面或切換到其它程序,當前進程變為隱藏進程,前台進程是不會殺掉的;可見進程(visible):oom_adj=1,可見進程雖然不在前台,但依然可見,如widget、輸入法等,這部分進程也非常重要,基本上不可能被殺掉;次要服務(secondary server):oom_adj=2,目前正在運行的一些服務,如下載、播放音樂,它們雖然屬於次要服務,但與系統息息相關,一般也不會被殺掉;隱藏進程(hidden):oom_adj=7,這個很容易理解,當應用從前台轉入到後台後,也就成為隱藏進程了,通常一鍵清理內存就是清掉這些隱藏進程;內容提供者(content provider):oom_adj=14,沒有程序實體,只提供內容供別的程序去用的,比如日曆供應節點,顯然這類進程最有可能被先殺掉;空進程(empty):oom_adj=15,有些程序在程序退出後,依然會在進程中駐留一個空進程,這個進程裡沒有任何數據在運行,作用往往是提高該程序下次的啟動速度或者記錄程序的一些歷史信息,這類進程無疑是要最先被殺掉的。Android的內存管理機制非常適合嵌入式系統,能充分發揮出硬件的潛力,當內存越大,它的優勢就越明顯。Android手機需要清內存嗎?需要嗎?回到要討論的話題,Android手機需要清內存嗎?需要嗎?需要嗎?需要嗎?結論是再明顯不過:不需要!其實這個結論也適用iPhone手機,iOS在內存管理方面更為激進。我們完全不用糾結Android手機上的可用內存大小,也不需要去一鍵清理內存,有時可能還會適得其反,尤其是在手機內存2GB起步3GB成主流的今天,我們會很享受Android的內存管理機制。目前硬件規格的Andr​​oid手機系統流暢度上都有著很好的表現,基本上能與iOS叫板,在Android 5.1.1以上版本中如絲般順滑都是可以期待的.
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

adamke 發表於 2016-1-4 06:48 PM

本來想用cc cleaner,但是不知怎的Note4一直無法開啟,一開就當機
後來發現ES 檔案管理竟然內建了清垃圾功能
我著眼的不是清除記憶體以加快速度,而是可以找出一些垃圾釋放一下內建記憶體的容量

potty512 發表於 2016-1-5 04:15 PM

清理內存真的有用嗎?
我好像都沒在清理但還是很正常

jj941023 發表於 2016-1-22 02:43 PM

我覺得清理內存確實有影響
這道理有點像 一般非IOS的筆電
用久了之後 記憶體會慢慢減少變慢一樣

但手機因為比較吃資源的APP沒有電腦多 所以變慢速度相對慢很多
但是如果使用久 或是有使用重度消耗資源的APP 還是會有差

我個人也是用clean master
不過實際的清理效果 不太敢確定
因為目前還是一年內的新手機
所以清理效果不大
不過以前的手機經驗 是有稍微提速 :)

gearwatch 發表於 2016-1-29 08:14 PM

我自己是不清內存的
有個多功鍵點下去就可以把最近使用的APP全部關掉
用那個就很方面了~<br><br><br><br><br><div></div>

leo哥 發表於 2016-2-16 11:20 PM

覺的重開機較有用 有些有內建定時重開機功能就滿實用的

wklow28 發表於 2016-3-1 12:47 PM

感覺好像很不錯的建議。
但我也懶得弄,都是關機重啟而已咯!
頁: [1]