(转)Android进程管理详解

Android的原理-不须要太多的剩余内存

 

    不用在乎剩余内存的大小.其实不少人都是把使用其余系统的习惯带过来来了.安卓Android大多应用没有退出的设计实际上是有道理的,这和系统对进程的调度机制有关系.若是你知道java,就能更清楚这机制了.其实和java的垃圾回收机制相似,系统有一个规则来回收内存.进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不须要的东西.固然这个值默认设置得很小,因此你会看到内存老在不多的数值徘徊.但事实上他并不影响速度.相反加快了下次启动应用的速度.这原本就是安卓Android标榜的优点之一,若是人为去关闭进程,没有太大必要.特别是自动关进程的软件.java

    到这里有人会说了,那为何内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余很少时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操做,特别是在一个程序频繁向系统申请内存的时候.这种状况下系统并不会关闭全部打开的进程,而是选择性关闭,频繁的调度天然会拖慢系统.因此,论坛上有个更改内存阀值的程序能够有必定改善. 但改动也可能带来一些问题,取决于值的设定.
    那么,进程管理软件有无必要呢?有的.就是在运行大型程序以前,你能够手动关闭一些进程释放内存,能够显著的提升运行速度.但一些小程序,彻底可交由系统本身管理.谈到这里,可能有的朋友会问,若是不关程序是否是会更耗电.我就说说 安卓Android后台的原理,你就明白了.安卓Android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态.因此为何有的程序切出去重进会到主界面.可是,一个程序若是想要在后台处理些东西,如音乐播放,它就会开启一个服务.服务可在后台持续运行,因此在后台耗电的也只有带服务的应用了.这个在进程管理软件里能看到,标签是service.至于广播什么的我就不涉及了.因此没有带服务的应用在后台是彻底不耗电的,没有必要关闭.这种设计原本就是一个很是好的设计,下次启动程序时,会更快,由于不须要读取界面资源,何须要关掉他们抹杀这个安卓Android的优势呢?
    还有一个.为何安卓Android一个应用看起来那么耗内存.你们知道,安卓Android上的应用是java,固然须要虚拟机,而安卓Android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机.这样设计的缘由是能够避免虚拟机崩溃致使整个系统崩溃,但代价就是须要更多内存.

    以上这些设计确保了安卓Android的稳定性,正常状况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现.你们多是被windows毒害得太深了,总想保留更多的内存,但实际上这并不必定会提高速度,相反却丧失了程序启动快的这一系统特点,很不必.你们不妨按我说的习惯来用用这个系统.最后推荐一款进程管理软件,systempanel,market上能搜到,界面友好启动快,功能也不错,用于手动关闭进程很好的软件. 祝你们玩机愉快,这系统开十天半个月都没问题,不是windows.android

 

至于为何开了大程序或者开了好几个程序以后切换会变慢,个人理解以下:
1.大程序A已经开启,占用70%内存,若是再想运行一个B,须要50%的内存,则就须要一个将A从内存中释放或者压缩的过程,因此表现出来的就是慢一下子
2.A\B\C\D\E共占用内存80%,运行新程序Z须要 20%的内存,系统内存由于没见过剩余0的时候,也就是应该剩一部分空闲内存,那么就须要从A~E这几个程序中选择一个或者几个来关闭,这一过程也须要耗费系统资源,因此会慢一下子
3.也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀,在须要内存的时候系统也会自动释放.
4.不在后台运行的程序(没服务的),即便不杀也不会耗电.在后台运行的(有服务的)程序,如后台放歌,固然会耗电.
5.不是说杀进程没用,否则做者就不会推荐进程管理软件了.哪一个带服务耗电哪一个后台一直在运行,看服务就能看出来,这样的该杀.
6,以qq举例,正常的退,会在进程管理里留下qq的运行状态,但不耗电不占 cpu,若是你只是切换出去(按小房子而不是退出)那么天然会耗电,由于程序还在运行.

(qq后台同样后台 就是qq正常退出的时候 和别的软件同样 不彻底退出 会在内存里留着  可是不占cpu 不费电 再次启动就会很是快了 这就是为何 android 能超越 WM6的系统的缘由)小程序

 

 

简单的说说房子键和退出键的区别,轻度研究手机的内存管理!!!


在运行一个程序时,按一下房子键就能够退到桌面,通常来讲按一下退出键也能够退到桌面,这二者有什么区别呢?

实际上是有区别的,你应该根据本身的须要灵活选择

按房子键,看起来彷佛是退出了,可是其实这个软件并无被关闭,而是转为了后台程序(指通常的软件,不讨论特别种类的软件)

按退出键,看起来也是退出没错,但这个软件实际上是被转为了空置程序(音乐除外,音乐属于有服务的特殊软件)

我们再来看看下图,是android的全部5个程序进程的级别高低,空进程是最低的,它存在的目的是为了下次打开这个软件的时候能够更加方便快速(这是个很好的设计目的),而一旦须要清理出更多内存空间时,它也是被系统自动的最优先清除的


系统进程级别图,级别越低的会越快越早的被系统智能清理掉


因此,你们明白了吧? 一旦须要退出软件时,若是是没有提供退出功能的软件,那么尽可能用退出键退出而不是房子键,而且,最重要的是,没有必要用进程管理类软件主动去清理空置进程,由于它原本就是为了被清理而存在,但在没轮到它被清理以前,还能够发挥从新快速开启的做用,一旦被你主动清理了,就连这点好处都没有了,那么,android系统的设计师又何须要设计出这个空置程序呢?直接释放内存不是更好么?因此,结论就是,既然它存在,就有它存在的好处!就要让咱们享受到这个好处!用进程管理主动去清除空置程序绝对是违反android系统的设计本意的,是一种好笑的傻作法!




再来讲说房子键

众所周知,android跟iphone不一样,我们的gphone是一个典型的多任务系统,既然是多任务系统,那么天然就会有一个在多任务之间切换的须要,那么你们是否真的都会这个操做呢?

这时候,就须要用到房子键了,在一个程序中的时候,好比短信息,看到几个单词不认识,那么就能够选中这段文字,而后复制,按房子键切换到桌面,而后打开词典,粘贴,查询,查好后再长按房子键(长按的做用是在几个打开的程序和最近曾打开的程序之间切换),切换回短信息,这时候短信息程序不须要从新打开仍然是你刚才的界面,能够再复制而后长按切换词典继续查询下一个单词。。。。

这就是房子键的用法,其实想必你们都知道这个用法,只不过可能没有考虑过其实这是一个先后台程序之间切换的过程而已。。。




最后,简单的概括一下全部内容,其实整篇文章的意思就是说,按退出键至关于“真正的”退出关闭程序,按房子键,看起来彷佛是关闭了程序,可是其实只是一种假象,程序只是被下降了仅仅“一”个等级而已,房子更适合多任务切换用,就这么简单。。。windows

 

关于android内存管理的原理,及相关自动内存管理软件原理浏览器

 

Android采起了一种有别于Linux的进程管理策略,有别于Linux的在进程活动中止后就结束该进程,Android把这些进程都保留在内存中,直到系统须要更多内存为止。这些保留在内存中的进程一般状况下不会影响总体系统的运行速度,而且当用户再次激活这些进程时,提高了进程的启动速度。

那Android何时结束进程?结束哪一个进程呢?以前广泛的认识是Android是依据一个名为LRU(last recently used 最近使用过的程序)列表,将程序进行排序,并结束最先的进程。XDA的楼主又进一步对这个管理机制进行研究,有了以下发现:

1.系统会对进程的重要性进行评估,并将重要性以“oom_adj”这个数值表示出来,赋予各个进程;(系统会根据“oom_adj”来判断须要结束哪些进程,通常来讲,“oom_adj”的值越大,该进程被系统选中终止的可能就越高)

2.前台程序的“oom_adj”值为0,这意味着它不会被系统终止,一旦它不可访问后,会得到个更高的“oom_adj”,做者推测“oom_adj”的值是根据软件在LRU列表中的位置所决定的;

3.Android不一样于Linux,有一套本身独特的进程管理模块,这个模块有更强的可定制性,可根据“oom_adj”值的范围来决定进程管理策略,好比能够设定“当内存小于X时,结束“oom_adj”大于Y的进程”。这给了进程管理脚本的编写以更多的选择。

4.Android将进程分为六大类:

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,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,做用每每是提升该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最早终止的。


实践

说完理论,说些实践的东西,怎样管理这六类进程,如何来设置进程管理模块是这部分说的内容。

首先是软件,推荐使用MinFreeManager,市场上就有下载,用于设置这六类进程的管理策略。

软件运行后有六个输入框,在输入框中只能输入数字,这些数字表明了这类进程的处理策略,好比Foreground App下的输入框显示6,就表示,当可用内存低于6MB时,终止Foreground App。下面的相似,如Empty App下的输入框显示24,则表示,当内存低于24MB时,终止Empty App。

从软件数值的设置不难看出结束进程的有限顺序:Empty>Content Provider>Hidden>Secondary Server>Visible>Foreground。

但默认设置确存在一些问题:
各种进程的管理策略的阀值至关接近:6,8,16,20,22,24,最大的相差也不到8MB,在实际程序运行中,很容易致使多种类型的进程同时被关闭。如可用内存在25时,忽然启动照相程序,系统可用内存急速,可能会致使空进程、内容供应节点、后台进程、次要服务等同时被关闭
阀值上限较低:通常手机启动后,可用内存在50-100左右,但随着手机的使用,可用内存会逐步减小,最后下降到24MB左右,则系统开始启动进程管理机制,开始结束进程,但这个阀限制设在了24MB,相对来讲偏低。其结果会致使系统使用一段时间后,总体速度变慢。很明显的就是,当手机长时间使用后,开启电话拨号,相册,照相机等应用时,系统的反应速度极慢。

基于以上几个问题,不难看出,咱们修改的目标也将很是明确,主要解决两个矛盾:
拉开各进程的阀值层次,使得进程管理机制能更有效得工做
提高阀值上限,空出更多的空余内存,以提高系统总体的运行速度

进程管理策略设置原则:
前台进程、可见进程和次要服务是与用户体验息息相关的内容,这部分的进程管理策略要相对保守,给这些进程留下足够的运行空间
压榨无用进程,腾出内存空间给主要程序使用

下面笔者总结了几种设置方式,适应不一样的使用须要:
游戏玩家/重度浏览器使用者配置:
用户特色:长时间专一于某一特定的,高内存需求的程序,对多任务的需求不高

配置参数:

1.Foreground:6
2.Visible:8
3.Secondary Server:16
4.Hiden App:80
5.Content Provider:90
6.Empty:100

配置理念:压榨后台进程,内容供应节点和空进程,将内存尽量多得留给前台进程和系统,提高游戏速度和浏览器体验
优势:程序启动和运行的速度最快
缺点:多任务处理不理想,开启程序较多时,后台进程会被终止

多任务配置:
用户特色:同时运行多个应用程序,须要常常在多个程序间切换

配置参数:

1.Foreground:6
2.Visible:8
3.Secondary Server:16
4.Hiden App:20
5.Content Provider:60
6.Empty:100

配置理念:压榨空进程,给内容供应节点留有必定空间,最大限度提高后台程序的使用空间,提高多任务的处理能力
优势:运行多个程序时,因为可支配内存较多,后台程序不容易被终止
缺点:程序启动的速度和总体系统的运行速度可能会比游戏玩家配置略慢一些,因为常常运行多任务,平时系统的响应速度会受到必定影响
轻度用户/女生专用配置
用户特色:手机的主要功能是短信和电话,偶尔用用相机自拍

配置参数:

1.Foreground:6
2.Visible:8
3.Secondary Server:16
4.Hiden App:24
5.Content Provider:32
6.Empty:48

配置理念:压榨空进程,给内容供应节点留有必定空间,最大限度提高后台程序的使用空间,提高多任务的处理能力
优势:比较均衡的配置,提高了系统的可用内存,使得系统的总体速度获得了提升,拉开了各级进程的管理策略层次,使得管理机制更有效率
缺点:比较均衡的配置,无明显缺点iphone

相关文章
相关标签/搜索