ZRAM SWAP内存管理讲解

术语介绍:

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反复压缩解压内从而拖慢速度。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android内存管理机制 [转载自大果仁Pareto的 android内存管理机制] 1、基于Linux内存管理...
    月落3804阅读 4,348评论 0 2
  • Android 设备作为一种移动设备,不管是内存还是 CPU 的性能都受到了一定的限制,无法做到象 PC 设备那样...
    甜甜的清风啊阅读 5,173评论 4 42
  • 操作系统对内存的管理 没有内存抽象的年代 在早些的操作系统中,并没有引入内存抽象的概念。程序直接访问和操作的都是物...
    Mr槑阅读 16,900评论 3 24
  • SWAP/swappiness/kswapd原理,swap分区优先级的妙用 概述 本文讨论的swap基于Linux...
    xywzhen阅读 10,788评论 1 5
  • 一、引 有时,一个人的实践是孤独的。 前不久我参加一个读书活动,遇到了许多好学上进的伙伴。其中有部分伙伴已经有很长...
    宋莹驿站阅读 1,760评论 0 0

友情链接更多精彩内容