【来自】 https://www.jianshu.com/p/dc515d6f14db

如今(2017)Android智能手机的存储空间(64GB+)和读写速度(UFS2.0+)都已经相当可观,那为何不启用swap来增加内存的可用空间呢?

Android是基于Linux的,但是在内存策略上有自己的套路。先区别一下两者的不同:Linux是一种“进程内存最大化”的分配策略,每个进程拿着OS分配给自己的虚拟内存,仿佛自己占满了整个地址总线的用户态空间。而这样就自然需要Swap机制来保证物理内存不被消耗殆尽,把最近最少使用的空间腾到外部存储空间上,假装还是存储在RAM里。但是Android的的进程分配策略是每个进程都有一个内存占用限制,这个具体大小由手机具体配置决定。目的就是为了让更多的进程都保留在RAM中,这样每个进程被唤起的时候可以避免外部存储到内部存储的数据读写而造成的启动卡顿,加快更多的App被点开时候的响应速度,所以这是为什么Android不采用“进程内存最大化”的分配策略的原因,一个流氓App把所有的内存全抢了,岂不是手机卡成狗。随之而然,Android采用了自己的LowMemoryKill策略来控制RAM中的进程。所以目的相同,都是希望物理内存的利用最大化,只不过两者采用不同的策略,一个是Swap,一个是LowMemoryKill。

比较一下Swap和LowMemoryKill的区别:Swap通过将最不频繁使用的进程数据写入磁盘,来给物理内存腾出空间。LowMemoryKill通过给进程分等级,来选择级别最低去杀死来腾出物理内存空间。Android系统会考虑进程的回收利益,当Android系统开始杀死LRU缓存中的进程时,系统会判断每个进程杀死后带来的回收收益。因为Android总是倾向于杀死一个能回收更多内存的进程,从而可以杀死更少的进程,来获取更多的内存。杀死的进程越少,对用户体验的影响就越小。相比较而言,LowMemoryKill这种策略更符合手机OS的用户体验需求。再者。你说UFS2.0+的读写速度相当可观,可那毕竟也是外部存储设备,就目前而言和RAM的读写速度相比还是慢太多。并且也没有那种系统架构可以直接让CPU和外部存储的数据交互,所以它再快,也还是一种外部存储设备而已。

Android 操作系统为什么不启用swap?相关推荐

  1. android操作系统优势,Android操作系统平台最大的优势

    Android操作系统平台最大的优势 2015-12-25 17:10:27 1074浏览 如今移动互联网势不可挡,移动软件应用市场就像是一个巨大的金矿.发展潜力巨大,而Android开发软件平台无疑 ...

  2. 浅谈新一代Android操作系统Android L

    今天早一些的时候,Google发布了新一代Android操作系统Android L.让我非常意外的是命名规则的变化,之前外界纷纷猜测会叫Android5.0,同时会给一个甜品的名字命名.因为Andro ...

  3. Android资源分离,可分离Android操作系统报告:硬件环境检测文件(十)(分析)...

    可分离Android操作系统报告:硬件环境检测文件(十)(分析) (2018-04-18 12:23:58) 标签: it 0x38000-终  1F E0 8E 05 60 29 1C ED A8 ...

  4. Android操作系统手机遇冷 国外辉煌国内难现

    美国市场研究公司NPD近日发布的统计数据显示,今年第一季度期间,Android手机在美国市场的销量已超过iPhone,占据该季度美国智能手 机总销量的28%,iPhone相应份额为21%,北京时间5月 ...

  5. android源码中的ndk,如何在不需要Android操作系统源代码的情况下在Android NDK中创建新的NativeWindow?...

    我想编译一个Android OpenGL控制台应用程序,您可以直接从控制台启动Android x86或从Android x86 GUI中的Android终端应用程序运行.如何在不需要Android操作 ...

  6. Android* 操作系统上的应用程序远程调试

    作者:robert-mueller Android* 操作系统应用程序远程调试 Android* Debug Bridge Android Debug Bridge (ADB) 是一种命令行工具,可处 ...

  7. 使用手机模拟器与android操作系统

    创建手机模拟器: 1. 点击Eclipse中新增的按钮,打开"Android Virtual Device Manager"(不同版本的ADT可能打开路径不同),如下图: 2. 点 ...

  8. Android操作系统版本

    Android操作系统版本 Android1.1(发布于2009年2月) 主要特性: 闹钟 API示例 浏览器 计算器 摄像头 联系人 开发工具包 拨号应用 电子邮件 地图(包含街景) 信息服务 音乐 ...

  9. 适用于 PC 的最佳 Android 操作系统(2022 版)

    想知道您是否可以在 PC 上使用 Android 操作系统? 好吧,您来对了 Internet 上的位置. 您当然可以在您的 PC 上运行 Android. 我们已经尝试并测试了一些适用于 PC 的最 ...

最新文章

  1. 高性能ASP.NET站点构建之托管资源优化
  2. bash 内置wait命令使用方法
  3. dropdown.js
  4. petalinux2020.1使用注意
  5. 使用Sublime Text 3作为Python编辑器有关中文问题
  6. Alibaba Cloud Linux 技术图谱首发,分享学习感言得大奖!
  7. CRM Document builder fill-in status fillin
  8. 微信小程序下拉刷新/上拉加载更多
  9. 天池 在线编程 双向取数(博弈DP)
  10. 数据结构HashMap(Android SparseArray 和ArrayMap)
  11. 如何以源码安装mysql_CentOS以源码方式安装MySQL
  12. php随机生成验证图片,php 生成随机验证码图片代码
  13. Java UDP小结
  14. 操作系统原理,多道程序设计,并发环境与并发任务,进程定义,进程控制块PCB,PCB维护的进程数据
  15. animation动画不生效_css animation不动怎么办
  16. 估值择时对ETF基金定投的影响
  17. 【数据库】MySQL 加锁处理分析
  18. Flutter如何有效地退出程序
  19. Hooks(钩子)监听消息的方法
  20. 为什么要用Modbus转MQTT网关?

热门文章

  1. Linux下常用的压缩与解压命令
  2. 程序猿个人发展(公司群分享)
  3. CentOS中使用Docker来部署Nginx
  4. SpringBoot开发第一个Web入门级应用(超详细)
  5. java 大于30分钟,如何将会话超时设置为大于30分钟
  6. mysql 网站 数据库_mysql系统数据库
  7. 用python中django创建网页终端直接关闭是什么问题_如何用Python Django创建网站?系列文章03(持续更新...)...
  8. CEO 赠书 | 节省 50% 的人生,终止“瞎忙”式勤奋
  9. 2017 数据驱动大会豪华议程出炉,早鸟票一周内全部售罄
  10. 关于类的非静态函数指针成员变量