術(shù)語介紹:
RAM? ?: 內(nèi)存
SWAP:Linux交換區(qū)
Flash? ?: 你可以想象為電腦硬盤窗骑。
Linux?:Android本身可以理解為Linux操作系統(tǒng)和windows操作系統(tǒng)一樣朝扼。
(random access memory) RAM=運(yùn)行內(nèi)存, (Read-Only Memory) ROM=儲存內(nèi)存= EMMC(閃存)
手機(jī)的運(yùn)行內(nèi)存是指運(yùn)行程序時(shí)存儲或者暫時(shí)存儲的地方,而CPU是用來計(jì)算的疮装。
RAM:? 運(yùn)行內(nèi)存。RAM越大间景,手機(jī)可運(yùn)行的APP應(yīng)用程序越多订晌,RAM越大手機(jī)運(yùn)行速度越流暢(目前基本是2GB夠用、3GB流暢诡挂、4GB用的更爽)碎浇。
ROM:? 儲存空間临谱。ROM越大璃俗,手機(jī)儲存的文件數(shù)量越多,ROM的大邢つ(16GB城豁、32GB、64GB等)不影響手機(jī)運(yùn)行速度抄课。
ROM一般包括:系統(tǒng)空間+用戶安裝程序空間+用戶儲存空間三個(gè)部分唱星。
Android內(nèi)存管理機(jī)制
假設(shè)你先開了QQ,然后跟妹子A聊天跟磨,然后你按了HOME鍵间聊,又開了威信和妹紙B聊天,假設(shè)這時(shí)候系統(tǒng)基本沒有內(nèi)存了抵拘,又按了HOME鍵想打開UC看看蒼老師的微博哎榴。Android會怎么干哪?他發(fā)現(xiàn)QQ最先到后臺,就把QQ給干掉了尚蝌。玩了會UC迎变,你又要跟妹紙A聊天,這時(shí)候android發(fā)現(xiàn)又沒有內(nèi)存了飘言,發(fā)現(xiàn)威信半天沒用了衣形,就把威信給干掉,然后給QQ用姿鸿。問題來了谆吴,你本來想多任務(wù),結(jié)果只能同時(shí)用兩個(gè)程序苛预,打開第三個(gè)如果內(nèi)存不夠就要干掉之前的纪铺。但是你期望的是我如果沒有把他退出去,我希望下次再打開QQ的時(shí)候還是在給妹紙A聊天的界面碟渺。
ZARM SWAP解決方案:
SWAP最開始的方案就是專門從flash(閃存ROM)上分出一塊區(qū)域鲜锚,每次如果內(nèi)存(運(yùn)行存儲RAM)不夠不是吧程序給干掉,而是把程序占用內(nèi)存的數(shù)據(jù)復(fù)制到SWAP分區(qū)苫拍,等切換回來的時(shí)候就直接把這部分復(fù)制到內(nèi)存里芜繁,這樣程序直接就恢復(fù)到之前的狀態(tài),譬如QQ上與妹紙A聊天的界面绒极。這樣你就感覺程序還是以前的樣子骏令,沒有被系統(tǒng)干掉。但是flash壽命有限一般10w次左右垄提,這樣頻繁讀寫很快flash就掛了榔袋。于是攻城獅就想到了另外一個(gè)辦法,把內(nèi)存劃分一部分拿出來當(dāng)SWAP用铡俐,但是羊毛出在羊身上凰兑,原來你QQ占用50M內(nèi)存,你又把他復(fù)制到SWAP里面還是50M审丘,SWAP還是占用的內(nèi)從吏够,等于說一點(diǎn)都沒減少內(nèi)從使用,所以就有了ZRAM SWAP滩报。攻城獅怎么干的呢锅知?比如你QQ占用50M內(nèi)存,他把他壓縮到20M然后再放到SWAP里面脓钾,這樣SWAP里面機(jī)可以放更多不用的程序售睹,就可以釋放更多的內(nèi)存給新的程序用,于是你就發(fā)現(xiàn)多任務(wù)切換終于利索了可训。這就是 ZRAM SWAP.
舉例說明
總內(nèi)存:600M= 600M(SWAP) +300 (活動內(nèi)存)
每個(gè)程序占用30M昌妹,壓縮后是10M生真。
沒有ZRAM SWAP 方案:
你可以同時(shí)打開 20 個(gè)程序 600/30 = 20
有ZRAM SWAP方案:
SWAP 里面可以保存 300/10 = 30
活動內(nèi)存里可以運(yùn)行??300/30 = 10
總共你可以同時(shí)運(yùn)行 40 個(gè)程序, 這就是差別捺宗。
ZARM SWAP?優(yōu)點(diǎn)
可以讓小內(nèi)存的設(shè)備在多任務(wù)的情況下切換自如柱蟀,提高用戶體驗(yàn)。
ZARM SWAP?缺點(diǎn):
如果在大內(nèi)存的設(shè)備上使用蚜厉,不僅不會快长已,反倒因?yàn)椴粩鄰?fù)制內(nèi)存并且CPU反復(fù)壓縮解壓內(nèi)從而拖慢速度。