- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
解读 Andriod 内存管理机制?一、进程类型?1、前台进程(foreground):目前正在屏幕上显示的进程和一些系统进程。举例来说, Dialer Storage,Google Search 等系统进程就是前台进程;再举例来说,当你运行一个程序,如浏览器,当浏览器界面在前?台显示时,浏览器属于前台进程(foreground),但一旦你按 home 回到主界面,浏览器就变成了后台程序(background)。我们最不希望终止的进程就是前台进程。?2、可见进程(visible):可见进程是一些不再前台,但用户依然可见的进程,举个例来说:widget、输入法等,都属于 visible。这部分进程虽然不在前台,但与我们的使用也密切相关,我们也不希望它们被终?止(你肯定不希望时钟、天气,新闻等 widget 被终止,那它们将无法同步,你也不希望输入法被终止,否则你每次输入时都需要重新启动输入法)。?3、次要服务(secondary server):目前正在运行的一些服务(主要服务,如拨号等,是不可能被进程管理终止的,故这里只谈次要服务),举例来说:谷歌企业套件,Gmail 内部存储,联系人内部存储等。这?部分服务虽然属于次要服务,但很一些系统功能依然息息相关,我们时常需要用到它们,所以也太希望他们被终止。?4、后台进程(hidden):虽然作者用了 hidden 这个词,但实际即是后台进程(background),就是我们?通常意义上理解的启动后被切换到后台的进程,如浏览器,阅读器等。当程序显示在屏幕上时,他所运行的进程即为前台进程(foreground),一旦我们按 home 返回主界面(注意是按 home,不是按 back),程序?就驻留在后台,成为后台进程(background)。后台进程的管理策略有多种:有较为积极的方式,一旦程序到达后台立即终止,这种方式会提高程序的运行速度,但无法加速程序的再次启动;也有较消极的方式,?尽可能多的保留后台程序,虽然可能会影响到单个程序的运行速度,但在再次启动已启动的程序时,速度会有所提升。这里就需要用户根据自己的使用习惯找到一个平衡点。?5、内容供应节点(content provider):没有程序实体,进提供内容供别的程序去用的,比如日历供应节?点,邮件供应节点等。在终止进程时,这类程序应该有较高的优先权。?6、空进程(empty):没有任何东西在内运行的进程,有些程序,比如 BTE,在程序退出后,依然会在?进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记?录程序的一些历史信息。这部分进程无疑是应该最先终止的。二、 内存管理机制?Android?是一个多任务系统。当退出程序时,Android 系统不会立即将它 Kill,这样下次再运行该程序时,可以快速启动。随着系统中保留的程序越来越多,内存会出现不足,此时 Android 系统使用”LowMemory?Killer”实现内存管理机制,即根据程序的重要性来决定 Kill 谁。Android 将程序的重要性分成以下几类,按照重要性依次降低的顺序:?其中每个程序都会有一个 oom_adj 值,这个值越小,程序越重要,被 Kill 的可能性越低。除了上述程序重?要性分类之外,Android 系同还维护着另外一张表,这张表是一个对应关系,以 N1为例:?这个表是定义了一个对应关系,每一个警戒值对应了一个重要性值,当系统的可用内存低于某个警戒值时,就杀掉所有大于该警戒值对应的重要性值的程序。比如说,当可用内存小于 6144 * 4K = 24MB 时,?开始杀所有的 EMPTY_APP,当可用内存小于 5632 * 4K = 22MB 时,开始 Kill 所有的 CONTENT_PROVIDER?和 EMPTY_APP。上面这张对应表是由两个文件组成的:?/sys/module/lowmemorykiller/parameters/adj 和/sys/module/lowmemorykiller/parameters/minfree。?使用“ alter minfreee”可以修改 /sys/module/lowmemorykiller/parameters/minfree 这个文件。例如,若将最后一项改为 32 * 1024,那么当可用内存小于 128MB 是,就开始杀所有的 EMPTY_APP。三、内存优化模式1、游戏玩家/重度浏览器使用者配置?用户特点:长时间专注于某一特定的,高内存需求?的程序,对多任务的需求不高?配置参数:??Foreground:6?Visible:8?Secondary Server:16?Hiden App:80?Content Provider:90?Empty:100
文档评论(0)