相信很多人用過512RAM的安卓手機(jī),一開機(jī)內(nèi)存只有200m啦,用一會(huì)兒就變成100多m,怎有很多程序在后臺(tái)關(guān)都關(guān)不了?接下來就講講512RAM的一些事情。
Android內(nèi)存原理不用在意剩余內(nèi)存的大小.其實(shí)很多人都是把使用其他系統(tǒng)的習(xí)慣帶過來了.安卓Android大多應(yīng)用沒有退出的設(shè)計(jì)其實(shí)是有道理的,這和系統(tǒng)對進(jìn)程的調(diào)度機(jī)制有關(guān)系.如果你知道java,就能更清楚這機(jī)制了.其實(shí)和java的垃圾回收機(jī)制類似,系統(tǒng)有一個(gè)規(guī)則來回收內(nèi)存.進(jìn)行內(nèi)存調(diào)度有個(gè)閥值,只有低于這個(gè)值系統(tǒng)才會(huì)按一個(gè)列表來關(guān)閉用戶不需要的東西.當(dāng)然這個(gè)值默認(rèn)設(shè)置得很小,所以你會(huì)看到內(nèi)存老在很少的數(shù)值徘徊.但事實(shí)上他并不影響速度.相反加快了下次啟動(dòng)應(yīng)用的速度.這本來就是安卓Android標(biāo)榜的優(yōu)勢之一,如果人為去關(guān)閉進(jìn)程,沒有太大必要.特別是自動(dòng)關(guān)進(jìn)程的軟件.
到這里有人會(huì)說了,那為什么內(nèi)存少的時(shí)候運(yùn)行大型程序會(huì)慢呢?其實(shí)很簡單,在內(nèi)存剩余不多時(shí)打開大型程序,會(huì)觸發(fā)系統(tǒng)自身的調(diào)進(jìn)程調(diào)度策略,這是十分消耗系統(tǒng)資源的操作,特別是在一個(gè)程序頻繁向系統(tǒng)申請內(nèi)存的時(shí)候.這種情況下系統(tǒng)并不會(huì)關(guān)閉所有打開的進(jìn)程,而是選擇性關(guān)閉,頻繁的調(diào)度自然會(huì)拖慢系統(tǒng).所以,論壇上有個(gè)更改內(nèi)存閥值的程序可以有一定改善. 但改動(dòng)也可能帶來一些問題,取決于值的設(shè)定.
那么,進(jìn)程管理軟件有無必要呢?有的.就是在運(yùn)行大型程序之前,你可以手動(dòng)關(guān)閉一些進(jìn)程釋放內(nèi)存,可以顯著的提高運(yùn)行速度.但一些小程序,完全可交由系統(tǒng)自己管理.談到這里,可能有的朋友會(huì)問,如果不關(guān)程序是不是會(huì)更耗電.我就說說 安卓后臺(tái)的原理,你就明白了.安卓Android的應(yīng)用在被切換到后臺(tái)時(shí),它其實(shí)已經(jīng)被暫停了,并不會(huì)消耗cpu資源,只保留了運(yùn)行狀態(tài).所以為什么有的程序切出去重進(jìn)會(huì)到主界面.但是,一個(gè)程序如果想要在后臺(tái)處理些東西,如音樂播放,它就會(huì)開啟一個(gè)服務(wù).服務(wù)可在后臺(tái)持續(xù)運(yùn)行,所以在后臺(tái)耗電的也只有帶服務(wù)的應(yīng)用了.這個(gè)在進(jìn)程管理軟件里能看到,標(biāo)簽是service.至于廣播什么的我就不涉及了.所以沒有帶服務(wù)的應(yīng)用在后臺(tái)是完全不耗電的,沒有必要關(guān)閉.這種設(shè)計(jì)本來就是一個(gè)非常好的設(shè)計(jì),下次啟動(dòng)程序時(shí),會(huì)更快,因?yàn)椴恍枰x取界面資源,何必要關(guān)掉他們抹殺這個(gè)安卓Android的優(yōu)點(diǎn)呢?
還有一個(gè).為什么安卓Android一個(gè)應(yīng)用看起來那么耗內(nèi)存.大家知道,安卓Android上的應(yīng)用是java,當(dāng)然需要虛擬機(jī),而安卓Android上的應(yīng)用是帶有獨(dú)立虛擬機(jī)的,也就是每開一個(gè)應(yīng)用就會(huì)打開一個(gè)獨(dú)立的虛擬機(jī).這樣設(shè)計(jì)的原因是可以避免虛擬機(jī)崩潰導(dǎo)致整個(gè)系統(tǒng)崩潰,但代價(jià)就是需要更多內(nèi)存.
以上這些設(shè)計(jì)確保了安卓Android的穩(wěn)定性,正常情況下最多單個(gè)程序崩潰,但整個(gè)系統(tǒng)不會(huì)崩潰,也永遠(yuǎn)沒有內(nèi)存不足的提示出現(xiàn).大家可能是被windows毒害得太深了,總想保留更多的內(nèi)存,但實(shí)際上這并不一定會(huì)提升速度,相反卻喪失了程序啟動(dòng)快的這一系統(tǒng)特色,很沒必要.大家不妨按我說的習(xí)慣來用用這個(gè)系統(tǒng).最后推薦一款進(jìn)程管理軟件,systempanel,market上能搜到,界面友好啟動(dòng)快,功能也不錯(cuò),用于手動(dòng)關(guān)閉進(jìn)程很好的軟件. 祝大家玩機(jī)愉快,這系統(tǒng)開十天半個(gè)月都沒問題,不是windows.
至于為什么開了大程序或者開了好幾個(gè)程序之后切換會(huì)變慢,我的理解如下:
1.大程序A已經(jīng)開啟,占用70%內(nèi)存,如果再想運(yùn)行一個(gè)B,需要50%的內(nèi)存,則就需要一個(gè)將A從內(nèi)存中釋放或者壓縮的過程,所以表現(xiàn)出來的就是慢一會(huì)兒
2.ABCDE共占用內(nèi)存80%,運(yùn)行新程序Z需要 20%的內(nèi)存,系統(tǒng)內(nèi)存因?yàn)闆]見過剩余0的時(shí)候,也就是應(yīng)該剩一部分空閑內(nèi)存,那么就需要從A~E這幾個(gè)程序中選擇一個(gè)或者幾個(gè)來關(guān)閉,這一過程也需要耗費(fèi)系統(tǒng)資源,所以會(huì)慢一會(huì)兒
3.也就是說你手動(dòng)去殺程序的時(shí)候,就是替系統(tǒng)在釋放內(nèi)存,就算你不殺,在需要內(nèi)存的時(shí)候系統(tǒng)也會(huì)自動(dòng)釋放.
4.不在后臺(tái)運(yùn)行的程序(沒服務(wù)的),即使不殺也不會(huì)耗電.在后臺(tái)運(yùn)行的(有服務(wù)的)程序,如后臺(tái)放歌,當(dāng)然會(huì)耗電.
5.不是說殺進(jìn)程沒用,不然作者就不會(huì)推薦進(jìn)程管理軟件了.哪個(gè)帶服務(wù)耗電哪個(gè)后臺(tái)一直在運(yùn)行,看服務(wù)就能看出來,這樣的該殺.
6,以qq舉例,正常的退,會(huì)在進(jìn)程管理里留下qq的運(yùn)行狀態(tài),但不耗電不占 cpu,如果你只是切換出去(按小房子而不是退出)那么自然會(huì)耗電,因?yàn)槌绦蜻€在運(yùn)行.(qq后臺(tái)一樣后臺(tái) 就是qq正常退出的時(shí)候 和別的軟件一樣 不完全退出 會(huì)在內(nèi)存里留著 但是不占cpu 不費(fèi)電 再次啟動(dòng)就會(huì)非常快了 這就是為什么 android 能超越 WM6的系統(tǒng)的原因
對于一些內(nèi)存很低的低端Android機(jī)而言,系統(tǒng)默認(rèn)的內(nèi)存分配機(jī)制無法實(shí)現(xiàn)很完善的內(nèi)存調(diào)配。就拿曾今的街機(jī)摩托羅拉defy來講吧,512m的總內(nèi)存和幾十m的空余內(nèi)存已經(jīng)可以充分的滿足系統(tǒng)自動(dòng)調(diào)配的需要,因此完全沒有必要老去殺進(jìn)程、清內(nèi)存,但是稍微裝兩個(gè)軟件就會(huì)很卡,更不用說一些大型游戲了。
RAM(random access memory)隨機(jī)存儲(chǔ)器。存儲(chǔ)單元的內(nèi)容可按需隨意取出或存入,且存取的速度與存儲(chǔ)單元的位置無關(guān)的存儲(chǔ)器。這種存儲(chǔ)器在斷電時(shí)將丟失其存儲(chǔ)內(nèi)容,故主要用于存儲(chǔ)短時(shí)間使用的程序。RAM越大,運(yùn)行大型游戲以及多線程程序時(shí)速度就越快。比如同樣的主頻的兩顆處理器,同等條件下,采用1GBRAM的處理器就比采用512MB RAM的處理器快。所以, RAM越大越好。目前安卓盒子主流都采用了1GB內(nèi)存. |
|