常常听到身边用安卓的朋友抱怨手机卡顿,内存动不动就快没了。而Google声称在512M的内存下也能流畅执行Android 4.4。究竟它做了什么?

总结一下它主要做了四件事:

1.优化内核,使用ActivityManager来降低直接内存回收

2.优化LMK(low memory killer)的临界值

3.使能KSM(Kernel Samepage Merging)

4.使能ZRAM取代SWAP分区

这几个事情,个人仅仅有第三和第四件事情看起来比較靠谱。

优化内核的事情:

摘自Google官方站点的英文介绍,翻译过来的意思大概是: 改动临界值,降低直接内存回收。由于直接内存回收会须要额外的IO操作,耗时较大。利用空暇的时间添加后台回收。

众所周知,对EMMC读写的时候,是非常耗费时间的,由于内存的读写速度要高出EMMC读写速度几个量级,因此降低与EMMC交互的确能够节省非常多时间。降低卡顿,可是每一个人的使用习惯不同。怎么要改动算法使得降低直接内存回收呢?我不知道,可是我认为这个优化等于说废话。究竟咋样,使用过后才知道。

关于LMK:

Linux内核中。用OOM来回收内存,即当内存不够的时候。调用一种算法,把那些不用的,优先级别比較低的。都给释放掉,这样腾出一部分内存,于是内存就变大了,而Android中,对这个OOM机制做了一个优化。它就叫LMK。

它觉得。假设等到OOM发生的时候,内存已经很不足了,这个时候再去释放内存,系统的响应时间会变的很长,造成很差的用户体验,于是LMK做了一个改变。定时检查空暇内存。当少于某个伐值的时候,就杀掉一些进程。腾出一些空间。这样保证系统中一直有较大的空暇内存。能够降低卡顿。有道理,后面的章节中会细致讲诉LMK。

KSM:

这个东西早在2009年的时候就出来了。可是反映比較平淡,原因是:KSM合并同样页面。即合并副本内存。能够节省不必要的内存。但而採用此方法,会添加耗电量,不得已的时候才会打开。

什么是ZRAM:

说的明确一点,ZRAM就是SWAP的一个改进。一般发生SWAP的时候,是把要置换出去的数据存到外部磁盘上(手机就是EMMC,电脑就是硬盘),这样会减少效率,于是聪明的开发人员们相处一个方法,那就是把要置换出去的东西压缩还放在内存中,这样消耗的仅仅是解压时间,而这个时间远远小于与外部磁盘交互所消耗的时间。

是个比較靠谱的方式,以下的章节中,将具体讲诉它的调用过程以及怎样打开。

于是LMK,KSM和ZRAM是笔者觉得比較靠谱的方式,以下的几个章节。将分别讲诉他们怎样被使能。以及详细的调用过程和原理。

巧妇能为少米之炊(1)——Android下小内存下的生存之道的更多相关文章

  1. 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果。

    include #include<vector> using namespace std; class Balls { public: int calcDistance(int A, in ...

  2. java问题排查总结

    前些天发现:http://hellojava.info/这个站点,关于java问题排查分析总结线上故障总结其实是最有价值的,好的总结就是一个系统演进历史,是团队难得的积累沉淀. 花了不少时间看了下,顺 ...

  3. 第三次个人作业——关于K米(Andorid)的案例分析

    第三次个人作业--关于K米(Andorid)的案例分析 1.K米简介 官方网址:http://www.ktvme.com/ 2.评测 2.1.上手体验 带着找bug的心态,兴致勃勃地开始体验 K米.打 ...

  4. CI(codeigniter)框架,routes.php设置正确,但是显示服务器错误,是__construct少写了一个下划线

    今天弄了一下CI框架,大概看了一下文档,感觉CI框架非常精简,但是在做的时候遇到了问题,CI文档中提供了一个新闻系统的例子,所有工作都做完了,在浏览器中打开相对应的url是,却显示“服务器错误”,一点 ...

  5. 为什么国外的 App 很少会有开屏广告?

    前言: 笔者在知乎看到这个问题,觉得这的确是一个值得关注和回答的现象,遂写了回答并整理成本文发布在此抛砖引玉,欢迎讨论. 正文: 古话说得好,先问是不是,再问为什么. 对于「国外的 App 很少有开屏 ...

  6. SQLite占用资源少原因

    本篇承接上篇SQLite详解的下篇,介绍SQLIte为什么占用资源少的原因?本文主要参考https://blog.csdn.net/hanyingzhong/article/details/46400 ...

  7. JsonFormat 日期少了8个小时?还我

    JsonFormat 后日期少了8个小时什么鬼? 前言 今天测试的时候发现时间对不上,比数据库里的时间少了8个小时?测试小姐姐一顿狂轰乱炸,一点都不温柔. 什么鬼?哪里出了问题?数据库显示的是下面

  8. C++高并发场景下读多写少的解决方案

    C++高并发场景下读多写少的解决方案 概述 一谈到高并发的解决方案,往往能想到模块水平拆分.数据库读写分离.分库分表,加缓存.加mq等,这些都是从系统架构上解决.单模块作为系统的组成单元,其性能好坏也 ...

  9. C++高并发场景下读多写少的优化方案

    概述 一谈到高并发的优化方案,往往能想到模块水平拆分.数据库读写分离.分库分表,加缓存.加mq等,这些都是从系统架构上解决.单模块作为系统的组成单元,其性能好坏也能很大的影响整体性能,本文从单模块下读 ...

随机推荐

  1. Java基础学习总结(58)——JAVA堆、栈详解

    关于堆栈的内容网上已经有很多资料了,这是我找的加上自己理解的一篇说明文: 一.内存区域类型 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制: 1. 栈:存放基本类型的变量数 ...

  2. 数人云CTO解读Docker 1.12和金融业容器化

    7月29日 数人云 在上海举办金融沙龙,邀请上交所和近二十家来自银行.保险.证券的IT技术专家一同探讨容器技术在金融业中的最佳实践.数人云CTO肖德时在会上将传统金融行业通过容器可以解决的四大问题做了 ...

  3. 2015 Multi-University Training Contest 7 hdu 5379 Mahjong tree

    Mahjong tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. WinServer-服务器管理器-从入门到放弃

    WIN7 远程服务器管理工具 看看这篇帖子,他们说可以在WIN7上通过服务器管理工具来管理服务器上的软件 https://social.technet.microsoft.com/Forums/zh- ...

  5. Accessibility辅助控制类

    熟悉Android开发的都知道辅助功能服务 Accessibility service.他的作用有非常多.360豌豆荚等应用市场的非root自己主动安装.微信抢红包插件.盲人辅助程序等等功能都是靠它实 ...

  6. 为什么整个互联网行业都缺前端project师?

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  7. log4j.xml打印日志信息(2)

    log4j.xml文件 <? xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:con ...

  8. 浅谈SaaS应用开发的难度

    近期做SaaS应用的非常多,这样的模式是未来的一种趋势,这样的模式的最大优点就是云计算的优点--节约资源.网上有非常多人觉得SaaS非常easy,就是一个多用户租赁模式.这样的认识也不能说不正确.由于 ...

  9. Pocket英语语法---四、should的同义词是谁

    Pocket英语语法---四.should的同义词是谁 一.总结 一句话总结:should表示劝告,建议,命令,其同义词是ought to,should强调主观看法,ought to强调客观要求.在疑 ...

  10. Visual Studio 2015 官方下载及密钥

    Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.Visual Studio 2015 是一个丰富的集成开发环境,可用于创建出色的 Windows.Andr ...