首页»版块 荣耀手机 其他机型 3c内存占用详解

3c内存占用详解

  [复制帖子标题和链接]

10.3万244

jessenju  LV10  发表于 2014-1-4 13:44:46 属地未知 来自:浏览器
本帖最后由 Mr_Yao 于 2014-3-8 22:02 编辑

很多机油说3c内存占用很大,要找办法杀后台。我来给大家普及一下知识,只要机子不卡,其实没必要。基本来讲,这是Android系统架构决定的,对于有组件在运行的进程,即使用任务管理器把它杀掉,那么ActivityManager还会把这个进程重启。

总的来讲“后台进程”是用于缓存程序启动用的,无论什么版本的 android ,都不需要杀,4.1之后有个选项不保留所有后台活动,这个仅仅是给程序调试用的,用户使用这个选项并无好处。“正在运行”那个界面中显示的是注册的服务,杀它也没意义,因为那些服务经常制作一些自动重启的机制,杀了还能自动起来。

如果需要知道详细就回复一下吧{:8_228:}

如果怕偷跑后台,可以设置数据流量的限制。

要想减少“正在运行”程序的数量,我能想到的无非有三个办法,第一个最简单最好。
1,完全卸载所对应的软件。
2,root 之后使用“启动项管理”,就是一个红色小汽车图标的软件,这个软件能控制所有 Broadcast Receiver 的接收,让相关软件无法收到指定的广播,也就无法开机自动启动,无法在被杀掉之后自动重启,注意控制广播接收有可能影响软件的部分正常功能,仅供有经验的用户使用。
3,root 之后使用钛备份捐赠版,将该软件“冻结”,冻结的软件跟卸载差不多,它还可以被升级,但不能被启动,也不会出现在程序列表中,这个程序仍然存在于系统中,仍然占用ROM空间,对于一些系统自带软件,用冻结比用卸载更安全。

不必手动关闭进程 Android系统内存管理原理解析
Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。

那Android什么时候结束进程?结束哪个进程呢?之前普遍的认识是Android是依据一个名为LRU(last recently used 最近使用过的程序)列表,将程序进行排序,并结束最早的进程。

Android系统内存管理机制
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的进程”。这给了进程管理脚本的编写以更多的选择。

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时,系统才会自动关闭空进程这一类型的程序,释放出更多的内存来供新程序使用,已保证新开程序的正常运行。
游客,如果您要查看本帖隐藏内容请评论


顺便推销一个活动,赢P6:http://cn.club.vmall.com/forum.php?mod=viewthread&tid=264169&extra=page%3D1



评论244
   发表于 2014-1-4 13:52 属地未知 来自:浏览器
{:8_199:}
jessenju  LV10  发表于 2014-1-4 13:54 属地未知 来自:浏览器
zhouheknight 发表于 2014-1-4 13:50
O(∩_∩)O谢谢

谢谢支持
jessenju  LV10  发表于 2014-1-4 14:08 属地未知 来自:浏览器
宝贝宸宸 发表于 2014-1-4 14:07
回复一下

谢谢支持
jessenju  LV10  发表于 2014-1-4 14:10 属地未知 来自:浏览器
1340903796 发表于 2014-1-4 14:08
华为3c内存占用很大,什么都没开到70%了,怎么破

其实没关系的,只要不卡就好。android和电脑上的系统不同
jessenju  LV10  发表于 2014-1-4 14:11 属地未知 来自:浏览器
sdwang 发表于 2014-1-4 14:10
其实所有的linux系统都是这亲确定的内存管理机制,内存那么大,你不用白不用,闲来干吗,需要的时候系统清理就 ...

看来你是高手啊
jessenju  LV10  发表于 2014-1-4 14:15 属地未知 来自:浏览器
江之岛盾子 发表于 2014-1-4 14:14
现在感觉1G确实太少了

软件越来越大,更电脑一样。内存没有最大,只有更大
jessenju  LV10  发表于 2014-1-4 14:21 属地未知 来自:浏览器
沉默转身离开 发表于 2014-1-4 14:19
沉默转身离开,如果您要查看本帖隐藏内容请回复

主要内容都不要回复
荣耀粉丝7001979  LV7  发表于 2014-1-4 14:31 属地未知 来自:浏览器
我要P6
   发表于 2014-1-4 14:49 属地未知 来自:浏览器
kanakn
您需要登录后才可以评论 登录 | 立即注册
简体中文 - China
快速回复 返回顶部 返回列表