Android内存管理策略的优化

一、Android内存管理策略

1.Backing Swap (优先执行Compcache,不能满足要求时再启用SWAP)
2.Compcache (压缩缓存,消耗CPU性能,比较费电)
3.Swap (传统LINUX的SWAP,加速SWAP所在介质的损耗)
4.lowmemorykiller (低内存杀手)

如启用Backing Swap策略,则同时启用Compcache和SWAP,并优先使用Compcache后再用SWAP,最后再执行owmemorykiller策略。
如不开启Backing Swap策略,Compcache策略和SWAP策略只能二选一,最后再执行lowmemorykiller策略。
即使不启用前三种管理策略,lowmemorykiller策略作为android系统默认的内存管理策略,也始终是开启的。

二,关于Compcache

Compcache是指对内存进行压缩,可以在“设置”-“CM设置”-“性能”-“使用压缩缓存”中设置。如果开启SWAP,这个值是“禁用”,没启用SWAP或Backing Swap,则默认18%,启用的话可以省出一些可用内存,但压缩解压过程会加大CPU的工作量,如果CPU性能不够强,反而会影响系统的流畅性,同时增加电量的消耗,所以,Compcache也要按实际需要设置,辩证对待。如果内存足够大,不推荐开启,CPU性能不够强,也不推荐开启。

三、关于SWAP

SWAP是一种LINUX下的基于内存分页的交换分区,类似虚拟内存技术,作为物理内存不足时的扩展补充,但并不等于是物理内存的直接增量。

使用条件:

1.支持SWAP的内核
2.含有busybox

推荐使用CM的Android的原版和衍生版。

为了方便使用,可根据下面代码说明,制作CreatIMG.sh和90userinit这两个脚本文件,这两个文件都是标准的文本格式内容,可参照下面代码用文本编辑器录入编辑。

1.CreatIMG.sh文件是用来在指定位置上生成指定大小的IMG镜像。

mount -o remount,rw /system;       //加载system分区
swapoff /dev/block/loop7;
dd if=/dev/zero of=/system/swap.img  bs=1024 count=65536;       //创建swap.img 文件,文件大小为count=65536,即64M

2.90userinit文件是让开机就自动运行挂载SWAP.IMG镜像并启用SWAP脚本。

mount -o remount,rw /system;         //加载system分区
losetup /dev/block/loop7 /system/swap.img ;      //将swapfile文件虚拟成设备分区loop7.
mkswap /dev/block/loop7;        //将设备分区loop7创建为交换区
swapon /dev/block/loop7;        //启用交换分区

上面代码中/system目录和swap.img文件名是可以自定义的,支持手机内置闪存任意位置,也支持外置闪存SD、TF卡任意位置,甚至是TF卡里的EXT分区。例如手机内置闪存的/data目录下(这也就是用户软件安装的目录),或是手机内置闪存/system目录(也就是系统目录)。

使用方法:

1.把CreatIMG.sh文件复制到手机里(/system或/data都可以,但不能是/sdcard)。
2.点击CreatIMG.sh文件,选择“执行”。
  目的:在system目录下生成IMG文件。
  注意:RE浏览器要重新打开system目录,才能看到是否已生成IMG文件。如果生成成功,可删除CreatIMG.sh。
4.把90userinit文件复制到/system/etc/init.d/目录下,更改权限为可执行rwxr-x---。
  目的:开机自动挂载IMG文件用于SWAP。
5.重启,再打开超级终端输入 free 命令查看是否SWAP已加载成功,如果看swap那一行不全是0,且是你指定的容量(数字是以KB为单位),则说明正确启用SWAP。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwgsdg.html