博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android内存管理
阅读量:5249 次
发布时间:2019-06-14

本文共 1657 字,大约阅读时间需要 5 分钟。

首先Android理机制相当复杂。想要讲清楚比較困难。其次对于绝大多数用户来说。仅仅关心内存够不够用,至于内存怎样管理的这样的技术细节,不是用户须要去考虑的,写这样一个专题有没有意义?毕竟我们是用手机,不是来研究手机的。

最后的顾虑是这个专题会不会太技术化了。绝大部分用户不会看或者说缺乏对应的背景。

可是有一种激励促使着我去写这样一个专题,一直以来,

MIUI
团队在与用户互动的过程中也同一时候在向用户学习。你们的一些建议或者点子总会给我们启发,这个专题中我相信你们相同能给以启发。尽管说内存管理是一个非常技术的话题,但我们仍能够从用户的角度去看这些问题,内存管理是怎样影响我们使用手机,作为用户,我们能做些什么。我会尽力使这样一个专题不那么技术化。可是仍旧免不了会有一些技术术语以及实现相关的讨论,假设有兴趣。我们就一起看看吧。


我们首先从用户发的一个帖子開始:“
”。在这个帖子中提到了"alter minfree"选项,在这一篇中我们就讲讲这个是什么。它是怎样工作的。


(1)Android是一个多任务系统,也就是说能够同一时候执行多个程序,这个大家应该非常熟悉。一般来说,启动执行一个程序是有一定的时间开销的。因此为了加快执行速度,当你退出一个程序时。Android并不会马上杀掉它,这样下次再执行该程序时,能够非常快的启动。随着系统中保留的程序越来越多,内存肯定会出现不足,这个时候Android系统開始挥舞屠刀杀程序。

这里就有一个非常明显的问题,杀谁?



(2)Android系统中杀程序的这个刽子手被称作"LowMemory Killer",它是在Linux内核中实现的。

这里它实现了一个机制,由程序的重要性来决定杀谁。通俗来说。谁不干活。先杀谁。Android将程序的重要性分成下面几类。依照重要性依次减少的顺序:



名称 oom_adj 解释
FOREGROUD_APP 0 前台程序,能够理解为你正在使用的程序
VISIBLE_APP 1 用户可见的程序
SECONDARY_SERVER 2 后台服务,比方说QQ会在后台执行服务
HOME_APP 4 HOME,就是主界面
HIDDEN_APP 7 被隐藏的程序
CONTENT_PROVIDER 14 内容提供者。
EMPTY_APP
15 
空程序,既不提供服务,也不提供内容

当中每一个程序都会有一个oom_adj值,这个值越小,程序越重要,被杀的可能性越低。


(3)除了上述程序重要性分类之外,Android系统还维护着另外一张表,这张表是一个相应关系,以N1为例:

oom_adj 内存警戒值( 以4K为单位)
0 1536
1 2048
2 4096
7 5120
14 5632
15 6144
这个表是定义了一个相应关系。每个警戒值相应了一个重要性值,当系统的可用内存低于某个警戒值时,就杀掉全部大于该警戒值相应的重要性值的程序。比方说,当可用内存小于6144 * 4K = 24MB时,開始杀全部的EMPTY_APP,当可用内存小于5632 * 4K = 22MB时,開始杀全部

的CONTENT_PROVIDER和EMPTY_APP。




(4) alter minfree改的是什么呢。上面这张相应表是由两个文件组成的:

/sys/module/lowmemorykiller/parameters/adj和/sys/module/lowmemorykiller/parameters/minfree。


alter minfreee就是改动/sys/module/lowmemorykiller/parameters/minfree这个文件的,举例来说,假设把最后一项改为32 * 1024,那么当可用内存小于128MB这是。他开始杀死所有EMPTY_APP。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/hrhguanli/p/4674695.html

你可能感兴趣的文章
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
perl 学习笔记
查看>>
31 Days of Windows Phone
查看>>
poj 1184(聪明的打字员)
查看>>
Ubuntu下面安装eclipse for c++
查看>>
C#压缩或解压(rar和zip文件)
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
【欧拉函数模板题】最大公约数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
织梦仿站第三课:网站的文件分割
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>