您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于Linux的Android系统内存管理研究 正文
基于Linux的Android系统内存管理研究

基于Linux的Android系统内存管理研究

点击数:7462 次   录入时间:03-04 12:03:21   整理:http://www.55dianzi.com   嵌入式系统-技术

    ⑤ CONTENT_PROVIDER(内容供应节点)没有程序实体,仅提供内容供别的进程使用,比如日历供应节点、邮件供应节点等。

    ⑥ EMPTY_APP(空进程)既不提供服务,也不提供内容。当进程退出时,系统会自动为其保留一个空进程,目的也是为了保证程序再次启动的速度。

    以上每个进程都会有个oom_adj值,①~⑥分别为0、1、2、7、14、15。

    除了程序的重要性,Android系统还会维护另外一张表,进程优先级及阈值对应关系如表1所列。

    表1 进程优先级及阈值对应关系

     

-=

    这个表定义了一个对应关系,每个警戒值对应了一个重要性值,当系统的可用内存低于某个警戒值时,就杀掉所有大于该警戒值对应的重要性的程序。

    4.2 内存管理优化

    Android的Low Memory Killer机制基本上可以满足普通用户的需求,但是针对于某些特定用户就需要对特定程序进行某些设置,从而手动地参与内存管理。对进程的优化主要设置6类进程的阈值,系统阈值存在的问题包括:第一,各类进程管理策略的阈值相当接近,在实际程序运行中,很容易导致多种类型的进程同时被关闭;第二,阈值上限较低,一般手机启动后,可用内存在50~100 MB左右,但随着手机的使用,内存会逐渐减小,最后降低到24 MB左右,但24 MB相对较低,会降低系统的反应速度。

    优化原则:拉开各进程的阈值层次,使得进程管理机制能更有效地工作;提高阈值上限,空出更多的空余内存,以提升系统整体的运行速度;前台进程、可见进程和次要服务是与用户体验息息相关的内容,这部分的进程管理策略要相对保守,给这些进程留下足够的运行空间;压榨无用进程,腾出内存空间给主要程序使用。

    4.3 内存测试

    本文以OK6410开发板为例,对内存优化进行测试,OK6410采用的是Android2.3.4系统,256 MB内存。系统默认内存配置如图1所示。67

     图1 系统默认内存配置(MB)

    这里采用测试程序对系统性能进行测试评分,在系统默认配置情况下优化前的内存测评如图2所示。43

    图2 优化前的内存测评

    图3 优化内存分配(MB)

    针对某些特定需求,以游戏玩家为例,此时只需要游戏运行有足够的内存空间,而对多任务的需求不高。因此,可以尽量压榨后台进程、内容供应节点和空进程,将内存尽可能地留给前台进程和系统程序,进而提升游戏运行速度。在此设置的值如图3所示。

    此设置大幅度提升了后台进程、内容供应节点和空进程的阈值,这样当系统内存小于100 MB时就可以最先杀死空进程,然后根据内存情况,进而杀死后台进程和内容供应节点。如此,就为前台进程和系统进程留下了足够的内存空间,很好地满足特定用户的需求。在此情况下的系统测评如图4所示。



www.55dianzi.com

    图4 优化后测评分数

    通过图2跟图4的分数以及理论分析,可以发现系统在内存方面的性能有了明显的提升。

    结语

    Android的内存管理基于Linux,并在此基础上有了很大的改变,在性能和稳定性方面为移动设备提供了很好的支持。其本身的内存管理机制可以合理地对每个进程进行管理,用户可以根据自己的需求通过对各个级别的优先级及阈值的改变参与到系统内存的管理中来。



上一页  [1] [2] 


本文关键字:Android  Linux  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术