术语介绍:
RAM : 内存
SWAP:Linux交换区
Flash : 你可以想象为电脑硬盘。
Linux :Android本身可以理解为Linux操作系统和windows操作系统一样。
(random access memory) RAM=运行内存, (Read-Only Memory) ROM=储存内存= EMMC(闪存)
手机的运行内存是指运行程序时存储或者暂时存储的地方,而CPU是用来计算的。
RAM: 运行内存。RAM越大,手机可运行的APP应用程序越多,RAM越大手机运行速度越流畅(目前基本是2GB够用、3GB流畅、4GB用的更爽)。
ROM: 储存空间。ROM越大,手机储存的文件数量越多,ROM的大小(16GB、32GB、64GB等)不影响手机运行速度。
ROM一般包括:系统空间+用户安装程序空间+用户储存空间三个部分。
Android内存管理机制
假设你先开了QQ,然后跟妹子A聊天,然后你按了HOME键,又开了威信和妹纸B聊天,假设这时候系统基本没有内存了,又按了HOME键想打开UC看看苍老师的微博。Android会怎么干哪?他发现QQ最先到后台,就把QQ给干掉了。玩了会UC,你又要跟妹纸A聊天,这时候android发现又没有内存了,发现威信半天没用了,就把威信给干掉,然后给QQ用。问题来了,你本来想多任务,结果只能同时用两个程序,打开第三个如果内存不够就要干掉之前的。但是你期望的是我如果没有把他退出去,我希望下次再打开QQ的时候还是在给妹纸A聊天的界面。
ZARM SWAP解决方案:
SWAP最开始的方案就是专门从flash(闪存ROM)上分出一块区域,每次如果内存(运行存储RAM)不够不是吧程序给干掉,而是把程序占用内存的数据复制到SWAP分区,等切换回来的时候就直接把这部分复制到内存里,这样程序直接就恢复到之前的状态,譬如QQ上与妹纸A聊天的界面。这样你就感觉程序还是以前的样子,没有被系统干掉。但是flash寿命有限一般10w次左右,这样频繁读写很快flash就挂了。于是攻城狮就想到了另外一个办法,把内存划分一部分拿出来当SWAP用,但是羊毛出在羊身上,原来你QQ占用50M内存,你又把他复制到SWAP里面还是50M,SWAP还是占用的内从,等于说一点都没减少内从使用,所以就有了ZRAM SWAP。攻城狮怎么干的呢?比如你QQ占用50M内存,他把他压缩到20M然后再放到SWAP里面,这样SWAP里面机可以放更多不用的程序,就可以释放更多的内存给新的程序用,于是你就发现多任务切换终于利索了。这就是 ZRAM SWAP.
举例说明
总内存:600M= 600M(SWAP) +300 (活动内存)
每个程序占用30M,压缩后是10M。
没有ZRAM SWAP 方案:
你可以同时打开 20 个程序 600/30 = 20
有ZRAM SWAP方案:
SWAP 里面可以保存 300/10 = 30
活动内存里可以运行 300/30 = 10
总共你可以同时运行 40 个程序, 这就是差别。
ZARM SWAP 优点
可以让小内存的设备在多任务的情况下切换自如,提高用户体验。
ZARM SWAP 缺点:
如果在大内存的设备上使用,不仅不会快,反倒因为不断复制内存并且CPU反复压缩解压内从而拖慢速度。