2023-05-21 编辑:千元手机 点击:0 次 A+
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,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最先终止的。
为什么我刚刷完rom,杀下进程运行内存有65MB,以后就越来越少了呢?
为什么阿里旺旺、QQ等程序挂到后台运行再重新回到前台后就掉线呢?
为什么每次打开进程管理器,可用内存总是在24MB左右呢?
以前用E63,运行一个程序,按下小房子键(home)就可以把这个程序调到后台运行,如果想要调回前台的话,只需再长按小房子键,就会出现一个程序列表,选择相应的程序,那个程序就会回到前台。买来G1后,上面也有一个home键,按下这个home键也能回到桌面。但是,如果想把程序调回前台,像E63那样操作,就会发现有的程序会重新打开一次,也就是QQ会掉线。还有以前明明选择了退出的程序,也会出现长按home键的名单中。
先来看下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,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最先终止的。
==========================转帖完毕=============
简单来说,就是选择退出程序时,并不是完全退出程序,该程序仍然会在后台驻留一个进程,以便下次更快的打开。那什么时候完全关闭该程序呢?这取决于该程序的类型(就是上面讲的那几个类型)。系统会给每个类型的程序一个内存值阈(阀门),也就是说当运行内存低于某个值时,系统会自动按照打开的先后顺序来关闭该类型的程序。例如,当运存小于24MB时,系统才会自动关闭空进程这一类型的程序。但是当运存到24MB时,后台运行QQ就会掉线。想要让QQ不掉线,就必须让运存在还剩24MB之前把不用的空进程关掉。
既然已经知道了android系统的内存管理原理,那么怎样让它按照我们的意愿自动关闭我们想关闭的程序,而不是一遍一遍的全杀任务呢?
下面推荐一个小软件:自动内存管理
这款软件,简单的说,就是管理每个类型程序的值阈的。再拿上面QQ的例子来说,我们可以把空进程的值阈调高点,也就是当运存小于45MB时,关闭空进程。这样,就可以最大限度的节省内存空间。
软件的操作方式很简单,就是拖动滑块来调节程序的值阈。如图:
注意滑块表示的内存数量并不是该类型程序能用的运存,而是当运存低于该值时,选择关闭着类型的程序。
用自动内存管理的好处: 自动结束你想结束的进程,不用频繁杀进程。一个任务管理器运行时,占用大量运存,我用了两个都是10MB左右,而这个才2.7MB。节省大量运存。
为了有些软件能够在后台宴神让接收消息,比如微信后台如果没有运行就无法即时收到最新消息,需要再次打开才能收到。
有些软件不是手动后台也会自动在后台运行,这个就是通常在说的自启项。因为现在的大部分软件在开发过程中会嵌入很多组件,这些组件在很多软件之间都是相关晌局联的,如果瞎州一个软件在后台运行了,通过某个组件可以链接式得唤醒安装在手机里含有该组件的软件,以至于有很多软件都在后台运行了,此时需要用第三方的软件来限制某些软件的自启,以及切断其唤醒路径。
安卓在5.1.1版本之前的都有一个内存溢出的bug,也是安卓最大的一个bug,在5.1.1版本修复,也是不断的在后台自启运行,导致手机内存不足,手机变得卡慢。
《安卓系统为什么那么多后台运行 手机安卓系统为什么产生那么多垃圾?》由 性价比高的手机原创提供,转载请注明 https://m.baijing8.cn/zixun/8985.html
人工智能期末试题及答案完整版(最新)解读
全球安卓手机性能排名出炉谁将成为新的表演之王?极客湾手机能效测试出炉:A15处理器独领风骚 按照极客湾目前的手机能效测试来看,a15处理器的性能是最强的,而且功效也最好。在最新公布的今年第三季度全球智能手机出货中,三星出货量又占据了第一的位置,在去年整个2018年中,三星凭借着14亿的全球销量成为2018年度出货量最多的手机企业,而排名第二的苹果也与三星相差将近1亿的销量。华为手机可以说是这些年最...
一加ace3小白测评一加Ace 3小白测评 一加Ace 3作为一加手机旗下的中高端机型,凭借其出色的性能、流畅的系统和较高的性价比,受到了广泛关注。以下是对一加Ace 3的详细测评。一加Ace 3在外观设计上延续了品牌的一贯风格,整体造型简约大气。屏幕采用了74英寸的AMOLED柔性直屏,支持120Hz高刷新率,显示效果细腻流畅。努比亚Z60 Ultra这款手机配备了6000mAh的大电池,确保了...
2021年荣耀手机销售排行榜(2021年华为手机销量排行榜)1、在第三名的位置上,是OPPO。OPPO在2021年的销量达到了49亿部,虽然比起前两名有些距离,但OPPO的表现也非常棒。OPPO一直以来都在注重自己产品的外观设计,以及用户体验,相信这也是它在销量榜上取得不俗成绩的重要原因。紧随其后的是vivo,vivo在2021年的销量达到了31亿部。2、早在2020年,华为就已夺得中国智能手机市...
人工智能专业好吗?人工智能专业是一个具有广阔就业前景的专业,而且在各个领域都有广泛的应用。随着人工智能技术的不断发展,该领域的机会也在不断增加。市场需求和发展前景:人工智能作为新兴领域,其市场需求和发展前景非常广阔。随着人工智能技术的迅猛发展,越来越多的企业和组织开始应用人工智能技术来提高效率和创新能力。就业前景好:由于人工智能技术的广泛应用和高度需求,该领域的就业前景非常乐观。许多公司都在积极招...