android开机自动开启zram,低内存配置  |  Android 开源项目  |  Android Open Source Project...

Android 支持内存为 512 MB 的设备。本文档旨在帮助 OEM 优化和配置 Android 内核 4.4,使其能够在低内存设备上运行。在下文所述的优化措施中,有几项非常通用,甚至也可应用于以前的版本。

Android 内核 4.4 平台优化

改善了内存管理

采用了经验证可节省内存的内核配置:交换到 zram。

终止了那些即将被取消缓存且过大的缓存进程。

不允许大型服务自行返回至 A 服务类别(以免导致启动器终止)。

终止了那些处于空闲维护状态中的过大进程(甚至终止当前 IME 等通常不可终止的进程)。

对后台服务的启动进行了序列化。

优化了低内存设备的内存使用方式:采用更严格的内存不足 (OOM) 调整级别、缩减图形缓存大小。

减少了系统内存占用

删减 system_server 和系统界面进程(节省了几兆的内存)。

在 Dalvik 中预加载 dex 缓存(节省了几兆的内存)。

采用了经验证的 JIT-off 选项(每个进程最多可节省 1.5MB 的内存)。

减少了各进程的字体缓存开销。

Procstats

添加了一个开发者选项,以显示内存状态和应用内存使用情况(按照运行频率和所耗内存量排序)。

API

添加了

内存跟踪

添加了 memtrack HAL 来跟踪图形内存分配情况、dumpsys meminfo 中的更多信息,以及 meminfo 中的阐明性总结(例如,所报告的可用内存包括缓存进程占用的内存,这样 OEM 就不会尝试优化内存错误)。

编译时配置

低内存设备标记

ActivityManager.isLowRamDevice() 标志可确定应用是否应关闭在低内存设备上表现非常差的某些内存密集型功能。

对于内存为 512 MB 的设备,该标记应返回 true。可以通过在设备 makefile 中使用以下系统属性来启用该 API:

PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true

启动器配置

启动器的默认壁纸设置不应使用动态壁纸。低内存设备不应预装任何动态壁纸。

内核配置

优化内核/ActivityManager 以减少直接回收

当进程或内核尝试分配(直接分配或因新页面中存在故障而分配)内存页面并且内核已用尽所有可用内存时,就会发生直接回收。在这种情况下,内核需要释放一个页面,并在此过程中阻断分配操作。而这通常又需要磁盘 I/O 清理一个有文件支持的脏页或等待 lowmemorykiller 终止一个进程。最终可能会导致任意线程(包括界面线程)中出现额外 I/O。

为避免出现直接回收,内核已配有可触发 kswapd 或后台回收的水印。此线程会尝试释放页面,以便下次分配真实线程时,能够快速顺利启动。

用于触发后台回收的默认阈值相当低,在 2GB 设备上约为 2 MB,在 512 MB 设备上约为 636 KB。内核通过后台回收仅能回收几兆的内存。这意味着,任何快速分配超过几兆内容的进程都会快速导致直接回收。

在 Android-3.4 内核分支中,我们通过补丁程序 92189d47f66c67e5fd92eafaa287e153197a454f(“添加用于扩展可用内存空间的可调选项”)添加了对内核可调选项的支持。如果您选择将该补丁程序添加到设备内核中,ActivityManager 会告知内核尝试保留能容纳 3 个全屏 32 bpp 缓冲区的可用内存空间。

这些阈值可通过 config.xml 框架进行配置。

-1

0

优化 LowMemoryKiller

ActivityManager 可配置 LowMemoryKiller 的阈值,使其符合它对在每个优先级分段中运行进程时所需的文件支持页面(缓存页面)工作集的预期。如果设备对工作集有很高的要求(例如:如果供应商界面需要更多内存,或者如果添加了更多服务),则可增大阈值。

如果为文件支持页面预留了太多内存,则可减小阈值,以便系统能够在因缓存变得过小而导致磁盘超负荷之前就终止后台进程。

-1

0

交换到 zram

zram 交换可通过压缩内存页面并将其放入动态分配的内存交换区来增加系统中的可用内存量。由于这是以牺牲 CPU 时间为代价来增加少量内存,因此您应仔细权衡 zram 交换会对您系统的性能造成的负面影响。

Android 会在多个层面上处理 zram 交换:

首先,必须启用以下内核选项,才能有效地使用 zram 交换:

CONFIG_SWAP

CONFIG_ZRAM

然后,您应将一行与下列类似的内容添加到 fstab 中:/dev/block/zram0 none swap defaults zramsize=,swapprio=

zramsize 是必要内容,表示您希望 zram 区域占用多少未压缩内存。压缩比通常介于 30-50% 之间。

仅当您没有多个交换区时才需要 swapprio。

在设备专用 swap_block_device,以便 SELinux 适当地对其进行处理。

/dev/block/zram0 u:object_r:swap_block_device:s0

默认情况下,Linux 内核每次会换入 8 页内存。当使用 zram 时,每次读取 1 页内存产生的增量开销微乎其微,如果设备承受巨大的内存压力,可能有所助益。要想每次只读取 1 页内存,请将以下内容添加到您的 init.rc 中:write /proc/sys/vm/page-cluster 0

在 init.rc 行的 mount_all /fstab.X 行之后,添加:swapon_all /fstab.X

如果在内核中启用了此功能,系统便会在启动时自动配置内存 cgroups。

如果内存 cgroup 可用,则 ActivityManager 将优先级较低的线程标记为可比其他线程更适合交换。在需要内存时,Android 内核会开始将内存页面迁移到 zRAM 交换区,并会优先处理那些已被 ActivityManager 标记的内存页面。

Carveout、Ion 和连续内存分配 (CMA)

在低内存设备上,请务必注意 carveout,尤其是那些未得到充分利用的 carveout,例如用于安全地播放视频的 carveout。有几种解决方案可最大限度地减小 carveout 区域的影响,具体取决于硬件的确切要求。

如果硬件允许不连续的内存分配,则可利用 Ion 系统堆从系统内存中分配内存,这样便无需使用 carveout。Ion 还会尝试增大分配的内存空间以消除外围设备上的转译后备缓冲区 (TLB) 压力。如果内存区域必须连续或必须限定在某个特定地址范围内,则可以使用 CMA。

这将创建一个 carveout,系统也可以将其用于处理可移动页面。

当需要该区域时,可移动页面就会从中移出,以便系统将处于空闲状态的大型 carveout 用于其他目的。 您可以直接将 CMA 与 Ion CMA 堆配合使用。

应用优化提示

使用 development/tools/findunused 移除预安装应用中所有未使用的资源(这应该会有助于减小应用所占用的空间)。

针对资源(特别是具有透明区域的资源)使用 PNG 格式。

编写原生代码时,请使用 calloc() 而非 malloc/memset。

请勿启用会将 Parcel 数据写入磁盘并在之后读取这些数据的代码。

使用 SSP 过滤,而不要订阅已安装的所有软件包。请添加如下所示的过滤条件:

了解 Android 中的各种进程状态

状态

含义

详情

SERVICE

SERVICE_RESTARTING

由于与应用相关的原因而在后台运行的应用。

SERVICESERVICE_RESTARTING 是应用过于频繁地在后台运行时会遇到的最常见的问题。使用 %duration * pss 或 %duration 作为“不良”指标。理想情况下,这些应用根本不应该运行。

IMPORTANT_FOREGROUND

RECEIVER

在后台运行的应用(不直接与用户交互)。

这些应用会增加系统的内存负载。使用 (%duration * pss)“不良”值来对这些进程进行排序。不过,很多此类应用都会因合理原因而需要运行。pss 大小将会是它们的内存负载的重要组成部分。

PERSISTENT

持续的系统进程。

跟踪 pss 可监视这些进程是否会变得过大。

TOP

正与用户交互的进程。

pss 在此又成为了重要指标,可显示应用在使用过程中产生的内存负载。

HOME

CACHED_EMPTY

系统保留的备用进程。

这些进程可随时终止,并可根据需要重新创建。内存状态(“正常”、“中等”、“低”、“严重”)是根据系统运行的此类进程的数量进行计算的。这些进程的关键指标为 pss。在这种状态下,这些进程应尽可能地减少其内存占用空间,以便系统能够保留尽可能多的进程。一般来说,与在 TOP 状态下相比,运行状况良好的应用在该状态下的 pss 占用空间明显更小。

CACHED_ACTIVITY

CACHED_ACTIVITY_CLIENT

与 TOP 相比,这些状态显示了应用将内存释放到后台的程度。

排除 CACHED_EMPTY 状态可改善这些数据,因为这项操作会排除因某些原因(除了与用户互动之外)而启动进程的情况。

这样便无需处理 CACHED_EMPTY 在执行与用户相关的 Activity 时产生的界面开销。

分析

分析应用启动时间

如需分析应用的启动时间,请运行 $ adb shell am start -P 或 --start-profiler 并启动您的应用。在该进程从 zygote 分 k 之后以及任何代码加载到该分支之前,分析器就会启动。

使用错误报告进行分析

错误报告包含一些服务(包括 batterystats、netstats、procstats、usagestats),它们可用于调试。报告可包括以下行:

------ CHECKIN BATTERYSTATS (dumpsys batterystats --checkin) ------

7,0,h,-2558644,97,1946288161,3,2,0,340,4183

7,0,h,-2553041,97,1946288161,3,2,0,340,4183

检查是否存在任何持续进程

要检查任何持续进程,请重新启动设备并检查进程情况。然后,让设备运行几个小时,然后再次检查进程情况。

两次检查之间不应存在任何长时间运行的进程。

运行长时测试

要运行长时测试,请让设备运行较长时间,并跟踪进程的内存占用情况,以确定内存用量增加还是保持不变。然后拟订规范的使用情形,并针对这些情形运行长时测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 自动 键盘,关于Android中的软键盘

InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,使之能够在底部或者全屏显示。当我们点击输入框时,系统对活动主窗口进行调整,从而为输入法腾出相应的空间&#xff0c…

Android渠道包自动发布市场,Android Gradle实现打包指定渠道后自动上传到fir

fir分三个主要步骤1.获取fir上传凭证2.上传APKAPP logo图标3.获取最新的下载地址供别人下载注:python使用的是requests网络请求库1.获取fir上传凭证image.png代码如下:# 第一步:获取fir上传凭证print("get fir upload certificate"…

android studio vfs,Android Studio:尝试呈现XML布局的InvalidVirtualFileAccessException

我正在尝试在我的应用中预览xml布局(任何xml布局).我正在使用Android Studio 1.5 Preview 2.我一遍又一遍地收到此错误:InvalidVirtualFileAccessException:访问无效的虚拟文件:file:// D:/Scott/Android/Studio/MyApp/app/build/intermediates/classes/debug/com/scott/myapp/…

android 基类fragment,Android DialogFragment 基类的定制

鸿洋博客介绍:DialogFragment的基本使用好处:1:使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的生命周期2.DialogFragment也允许开发者把Dialog作为内嵌…

升级鸿蒙系统无法选择应用,申请鸿蒙系统有一个应用选择怎么选择呢

[分享交流]申请鸿蒙系统有一个应用选择怎么选择呢34364电梯直达huafen774590890新学乍练发表于 2020-12-18 22:19:17来自:HUAWEI Mate 30 Pro 5G最新回复 2020-12-19 09:31:55要怎么选择大家知道吗?想着你的狼自成一派发表于 2020-12-18 22:22:29来自&am…

html5 网页游戏论文,JavaScript编写的网页小游戏,很给力

以下为游戏代码:var timerID null;var INT 40;var loadFLG 0;var gameFLG 0;var missFLG 0;var tim 0;var blcol new Array(5); // block colorvar blsta new Array(40); // block statusvar blNO new Array(40); // block Novar blclr 0; // clear block…

c 插件读取有属性的html6,廖雪峰的JS教程6-jQuery

jQueryjQuery是JavaScript世界中使用最广泛的一个库。jQuery这么流行,肯定是因为它解决了一些很重要的问题。实际上,jQuery能帮我们干这些事情:消除浏览器差异:你不需要自己写冗长的代码来针对不同的浏览器来绑定事件,…

html5中的css特性,浅谈HTML5 CSS3的新交互特性

本文标题的这副图片,是用phosotshop制作的。但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字。并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的等待图片的刷新。那么&#…

html表格通过邮件发送,通过html表格发电子邮件

[email protected]>Create this tableThe field "what" is for different categoriesCREATE TABLE email_notify (ID int(11) DEFAULT ‘0‘ NOT NULL,What varchar(60) DEFAULT ‘0‘ NOT NULL,Name varchar(60) DEFAULT ‘0‘ NOT NULL,Email varchar(60) DEFAU…

计算机专业知识多选题证监会,2019年国家公务员考试中国证监会(计算机类)专业科目考试大纲...

2019年国家公务员考试中国证监会(计算机类)专业科目考试大纲由国家公务员考试网公告解读栏目由提供,更多关于2019国家公务员考试大纲,计算机类国考考试大纲,证监会国考考试大,国家公务员考试公告解读的内容,请关注国家公务员考试网/广东公务员考试网&…

计算机和网络老是断开,电脑插上网线还是显示断开连接怎么办

在网络故障处理中遇到过千奇百怪的问题,这里就说一个比较怪异的问题。一个网线插口,有的电脑插上网线可以正常上网,而有的电脑插上就显示断开连接。试了好多办法,换了网线,换了插口,换了路由器,…

计量经济学第六版计算机答案,伍德里奇计量经济学导论计算机习题第六章第13题c_6.13...

伍德里奇计量经济学导论计算机习题第六章第13题,答案和MATLAB代码clear,clc;% c6.13 by% 打开文字文件和数据文件importdata(meap00_01.des);dataxlsread(meap00_01);% 检验所用数据是否为非空Isnanisnan(data(:,[3,5,8,9]));asum(Isnan);bfind(a0);data1data(b,:);% 变量命名m…

思品课如何使用计算机教学课件,小学思品获奖论文巧用多媒体,优化思品课堂教学...

小学思品获奖论文巧用多媒体,优化思品课堂教学摘要:信息技术辅助课堂教学,有利于促进思想品德课教学内容呈现方式、教师教学方式、学生学习方式和师生互动方式的变革。利用信息技术能提高学生学习思想品德的兴趣;有利于培养学生的…

计算机网络的资源共享功能包,计算机网络的资源共享功能包括

资源共享是现代计算机网络的最主要的作用,它包括软件共享、硬件共享及数据共享。在网络中,多台计算机或同一计算机中的多个用户,同时使用硬件和软件资源。通常多用户同时需要的资源总是超过系统实际物理资源的数量,但采用逻辑(或虚…

《计算机应用基础》期末试卷.,《计算机应用基础》期末试卷(A卷)《计算机应用基础》期末试卷(A卷).doc...

广东外语艺术职业学院成人高等教育2012学年第 一 学期 三年 制2012级 初等教育专业计算机应用基础课程 期末 考试试题试卷类型:A 考试形式:闭卷本试题共 五 大题, 4 页,满分 100 分,考试时间为 120 分钟,答…

计算机学院嘉年华标题,“芯动盛夏 AI创南航” 计算机学院举办第八届计算机嘉年华...

当前,我们正迎来一个科技主导的全智能时代,为激发大家学习探索人工智能的兴趣,切身感受AI科技的魅力所在,计算机科学与技术学院/人工智能学院于6月20日在体育馆广场举办了“芯动盛夏 AI创南航”第八届计算机嘉年华活动。活动中&am…

计算机网络与通信02339,4月全国高等教育自学考试计算机网络与通信试题及答案解析.docx...

4月全国高等教育自学考试计算机网络与通信试题及答案解析.docx精品自学考试资料推荐全国 2018 年 4 月高等教育自学考试计算机网络与通信试题课程代码 02339一、单项选择题本大题共 15 小题,每小题1 分,共 15 分 在每小题列出的四个备选项中只有一个是符…

计算机考研百天,2015考研计算机专业复习百天周计划

计算机百天冲刺周计划学习目标篇百天计划第一周(9月26日—10月6日)1.完成数据结构中线性表的复习;并配以习题巩固练习。2.完成强化课程数据结构第一章的学习,重难点针对复习。3.完成数据结构中栈,队列和数组的复习; 并配以习题巩固练习。4.完成强化课程数…

爱尔兰都柏林圣三一大学计算机排名,2021年爱尔兰都柏林圣三一大学世界及专业排名 不愧是最古老的学府!...

它是参照牛津和剑桥大学模式兴建的欧索世界顶级研究型大学,其商学院也是欧洲培养企业家最多的商学院之一,这所名校就是爱尔兰都柏林圣三一大学,该校的科研实力雄厚,因此,每年都会吸引一大批的学子前往该校留学&#xf…

计算机系统的四种启动方式是,电脑启动方式有几种你知道吗?

关于电脑启动方式有几种,可能你会说,电脑启动不就是按电源按钮启动吗?实际上,电脑有三种启动方式,而且三种启动方式会对应不一样情况,虽然有些概念对现在的电脑略微有一点点落后,但是对于玩电脑…