android的swap分区与linux相同,都是用于数据交换的,类似于windows上的虚拟内存。合理设置swap能提升系统的速度,降低系统因内存不足而关闭后台程序的频率。但如果设置不当,反而会拖慢系统速度,影响使用体验。
本文就从android内存管理机制出发,介绍合理设置swap的方法。由于本人并不是开发者,对android的内存管理机制的理解可能有偏差的地方,欢迎指证,废话不多,lets go。
一、android的内存管理机制
我们知道android的程序都是没有关闭键的,所有大部分程序推出后还是有一部分数据驻留在内存里。但内存不可能无限大,打开程序一多,又都不完全退出,时间一长,再大的内存也是不够用的,更何况hero的可用内存仅192mb(总内存288mb,96mb被radio占用,另外的192mb系统可用),去掉os占掉的部分,真正可获得的内存不到140mb,随便用用,内存就耗完了。
当系统内存不足时内存管理机制就开始起作用了,会在程序列表里选择长时间空闲的程序予以关闭,以保证系统的运行速度。这种机制在大部分时间里都运行得不错。但有些比较让人恼火的地方在于,并不是所有的程序被关闭时都保存现场的,比如浏览器。
在最坏的情况里,你正在浏览器里更新你的博客,这时突然来了个电话,打完电话后你发现浏览器因为内存不足而被强制关闭了,当你再打开浏览器时,赫然出现的是浏览器主页的时候,那真是叫天天不应,叫地地不灵了。当然这种情况不会经常发生,即便发生了有时你的损失也仅仅是那些打开的标签页,但这种问题是切实存在的。
二、什么是swap?swap有什么用?
前文说道,swap分区类似于windows的虚拟内存,是将sd卡上的空间作为系统内存的补充。它的优缺点也跟虚拟内存类似,可以让系统同时运行很多的程序或者对内存需求更大的程序,但读写的速度大大低于物理内存。
由于sd卡的速度较慢,在卡内的swap主要作用是建立一个交换空间,当有较大内存需求的软件(如电话、相机等)突然运行时,可以将后台程序先暂存在swap分区里,待该软件使用完毕,内存又有空余的时候,再将swap内的程序数据转到内存里,以降低程序被关闭的可能。
有一点需要注意的是,开启 甲状腺后,并不是说程序不会被关闭了,而是说被关闭的几率变小了。
三、给sd卡分区
使用swap的花需要给sd卡分区,1.5.2的RA Recovery就自带给sd卡分区的功能,直接选择Partition sdcard,并一路按home即可。
recovery主界面,选择Partition sdcard即可对sd卡进行分区
在子菜单里,选择Partiton SD即开始对SD卡分区操作
第一个32mb是设置swap分区大小,第二个512mb是设置ext分区的大小,用作app2sd。
第一个Swap-size的大小即Swap分区的大小。使用轨迹球上下滚动即可调节分区大小。设置为0即不分此分区。一般使用默认即可。
第二个Ext2-size即ext分区的大小,用来将程序装在卡上,也可以用轨迹球上下滚动调节大小,一般也是默认即可
分区完成后,选择ext2 to ext3升级拉的文件系统,以加快卡的读取速度。
注意不要升级到ext4分区,1.5.2的recovery对ext4的支持不好,会导致 手机无法通过nand备份和恢复系统,所以只要升级到ext3即可
升级结束后,选择reboot system now重启系统即可。
四、swapper软件的使用
要开始使用swap分区的话,需要先下载swapper软件,在电子市场里直接有下载,免费的,直接搜索即可。
Swapper软件图标
swapper软件除了可以开启使用swap分区外,还能在卡上建立swap文件,方便sd卡没分区的用户使用。但由于在卡内使用swap时,每次连接电脑加载sd卡后,再次取消加载就会显示sd卡损坏,必须重启才能恢复,较为麻烦,所以还是建议使用swap分区。
swapper默认使用卡内swap需要在设置,高级设置里勾选使用swap分区。选中后返回swap的主界面,选择打开swap即可。至此,你已经成功建立并开始了swap。
swapper软件的主界面,由于默认不是使用swap分区,故点击设置进行更改
点击设置后会出现Swapper的首选项界面,点击高级选项
在高级设置里,勾选“使用SWAP”分区,即可开启SD卡里的SWAP分区的使用
回到主界面,点击Swap ON,出现All done后,即可开启swap分区
点击获取信息,即出现了Swap分区和内存使用情况的信息,这里看到swap分区总大小32MB
后记
swap分区不宜过大,因为sd卡的读取速度实在太慢,设置太大的话,会有太多数据滞留在卡内,拖慢慢系统速度。笔者曾经就设置过288mb的swap,应用程序 甲状腺是很少关闭了,但使用时间一长,会导致机器卡到完全无法操作,因为太多数据滞留在SD卡里,SD卡的读卡速度是系统的最大瓶颈,这时必须手动关闭程序释放内存才能正常使用,这样就得不偿失了,所以大家还是要按照自己的使用需求,合理设置swap大小和swappness的数值。