在 Android 的 /data 目录下添加虚拟内存

Android 系统上添加虚拟内存已经不是什么新鲜事了, 很多手机都支持, 通常都是将虚拟内存添加到 SD 卡上, 不过由于 SD 卡的的读写速度有速度限制, 再加上如果不是用高速的 SD 卡的话, 将虚拟内存添加到 SD 卡上的效果就不是很明显了, 其实还有一个地方可以添加虚拟内存, 那就是 /data 目录。 为什么把虚拟内存添加到 /data 目录呢, 原因如下:

1、 /data 目录有足够的的剩余空间容纳虚拟内存

几乎所有的 Android 手机都支持 App2SD 或者 App2Ext , 将应用安装到 SD 卡之后, /data 目录剩余的空间比较大, 是足以容纳下虚拟内存需要的空间。

2、 存取速度比 SD 卡要快

/data 目录使用手机内部的 flash 存储器, 内置存储比外加的 SD 卡品质要好很多, 读写速度也比 SD 卡要快很多。

鉴于以上的两个优点, 将虚拟内存添加到 /data 目录应该是首选, 以我手上的 Moto Milestone 为例, 由于手机很旧, 只有 256 内存, 如果想运行最新的 CM9 或者 CM10 的话, 内存明显紧张, 好在最新版的 CM10 安装之后将很多系统文件都移动到了 /sd-ext 分区, /data 目录下剩余空间达 160M 多, 因此可以考虑在 /data 目录下添加 64M 的虚拟内存。

原来在 /sd-ext 分区启用虚拟内存的脚本为:

#!/system/bin/sh

# turn swap if it file exists /sd-ext/swap.swp

if [ -e /sd-ext/swap.swp ];

then

busybox swapon /sd-ext/swap.swp

fi;

脚本很简单, 检查一下如果 /sd-ext 目录下存在 swap.swp 文件的话, 就将它挂载为虚拟内存。 现在就将 swap.swp 文件复制到 /data 目录下, 并将脚本修改为:

#!/system/bin/sh

# turn swap if it file exists /data/swap.swp

if [ -e /data/swap.swp ];

then

busybox swapon /data/swap.swp

fi;

运行发现不能挂载虚拟内存, 得到的提示是:

swapon: /data/swap.swp: Invalid argument

看来不能按照原来的方式添加虚拟内存, 经过一番搜索, 在 xda 论坛上找到了解决方法, 就是将 swap.swp 文件模拟成一个设备, 然后将这个设备挂载为虚拟内存, 最终挂载虚拟内存的脚本如下:

#!/system/bin/sh

# turn swap if it file exists /data/swap.swp

if [ -e /data/swap.swp ];

then

losetup /dev/block/loop0 /data/swap.swp

busybox swapon /dev/block/loop0

fi;

将这个脚本复制到 /data/local/userinit.d 目录或者保存为 /data/local/userinit.sh , 重启手机就可以自动挂载虚拟内存了。

android 创建虚拟内存,在 Android 的 /data 目录下添加虚拟内存相关推荐

  1. Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)

    Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲) 准备 1.储存在raw文件夹 2. ...

  2. 手机Root后如何拿取data/data目录下的文件夹到电脑上

    在实际开发中,有很多需要拿取真机上应用数据库文件.那么如何快速拿取呢? 在Android Studio中通过工具栏Tools - Android - Android Device Monitor打开安 ...

  3. 在不root手机的情况下读取Data目录下的文件

    127|shell@android:/ $ cd /data cd /data shell@android:/data $ ls ls opendir failed, Permission denie ...

  4. mysql复制文件迁移后看不到表_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...

    我目前有两个数据库: mysql5.6.x mysql5.7.x 现在要将mysql5.6.x 的所有数据 迁移到 mysql5.7.x 中,采取的是直接将 mysqldata 目录下的相关文件夹(数 ...

  5. mysql拷贝目录迁移方案_mysql 直接拷贝data 目录下文件 进行数据库迁移时遇到的一些问题??...

    我目前有两个数据库: mysql5.6.x mysql5.7.x 现在要将mysql5.6.x 的所有数据 迁移到 mysql5.7.x 中,采取的是直接将 mysqldata 目录下的相关文件夹(数 ...

  6. linux脚本:每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下

    需求: 每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下 最好每次备份按时间生成不同的备份包 解决: # cat a.sh #/bin/bash cd /var/w ...

  7. Linux编写内核模块,实现在/proc目录下添加文件

    /proc是Linux上的一种虚拟文件系统,存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以更改其中某些文件来改变内核的运行状态. 现编 ...

  8. Android创建文件为unix格式,Recovery模式下/cache/recovery/目录下创建文件,开机后文件被删除...

    在一次需求的实现过程中需要在remcovery模式下,在/cache/recovery/目录下创建一个日志文件用于记录相关的日志信息,以便于在开机后读取这些日志信息,再根据日志信息做出相应的处理,但是 ...

  9. android创建布局文件,android学习——Android Studio下创建menu布局文件

    一.问题: android studio项目中没有看到menu文件夹: 在android studio项目中想要添加menu布局文件,一开始我的做法是:直接在res文件夹右键选择xml文件来添加,如下 ...

最新文章

  1. C 类INI文本,可以添加注释(初步实现,可以添加更加复杂的通用化设计)
  2. java传入一个字符串 将它分割成大写字符为首的字符串数组
  3. mysql 指定目录_mysql 更改默认数据目录
  4. Python(1):写在前面
  5. python类汇总_Python 类总结
  6. edusrc0day挖掘技巧
  7. 微软为 Windows Terminal 推出全新 logo
  8. 修改JEECG项目浏览器标题
  9. 【优化模型】逐步回归算法
  10. 从入门到放弃的华为手机忘记密码后的数据自救之旅
  11. 在线将PDF极速转换为图片
  12. 苹果4.3该如何避免?机审人审怎么过?
  13. 我的世界服务器皮肤修改,万用皮肤补丁CustomSkinLoader
  14. 数码计算机英语单词,数码相机的规格词汇中英对照
  15. #如何理解使用for循环遍历lst与lst[:],如果使用remove更改列表结果会不同
  16. 【CQF Math Class 数学笔记】
  17. 16进制颜色值透明度百分比对照
  18. EXCEL干货(1-1): 基本表格操作
  19. 新程序语言 Wyvern 将不同Web语言融合在一起
  20. android 读写cpu卡,RAM/CPU和SD卡读写性能提升_联想 K860i_手机Android频道-中关村在线...

热门文章

  1. 2020-2021年面向中小学生的全国性竞赛活动名单的公示
  2. 5.MATLAB路径管理
  3. 1、HTML 初步认识
  4. Scrum立会报告+燃尽图(十一月十八日总第二十六次):功能开发与讨论贡献分配规则...
  5. XPath 使用那些事
  6. openstack之neutron linuxbridge + vlan组网
  7. 【v2.x OGE-example 第一节】 绘制实体
  8. Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件...
  9. 如何防止无线网络被破解
  10. DW的代码格式化和净化功能