你的位置: iPc 首页 > 全部文章 > 应用技巧 > 阅读文章
科学X网    Office    苹果中国    微软中国    VPS

Android 多任务机制科普 - 不做强迫症,不需要清内存

06
七月

想当年,清内存的习惯由来已久。在 Android 还没出生,我们使用 Windows 时,总巴不得把所有没有用到的进程关掉,这样才不会“占内存”,不会“占 CPU ”,电脑才不会“卡”。(大部分的“安全软件”就是靠帮用户在 Windows 上清内存,清垃圾而扬名)这算是清内存的历史原因……

android

然而 Android 跟 Windows 相比,是完全不同的内存管理机制

背景:

Android 基于 Linux 的内核,继承并改进了 Linux 的内存管理机制。

Android 的内存管理机制:

有多少内存就用多少,空闲内存全部当缓存。也就是,当一个进程停止活动,Windows 会把它从内存中清除,但Android会把进程保留在内存里,这样下次启动时就会非常快,因为省去了再次从储存设备读取的时间,只有当内存不足以启动一个新进程时,Android 才会清除某些驻留在内存中停止活动的进程。

每个进程以 Java 虚拟机独立存在,互不干扰。确保 Android 的稳定性,正常情况下即使单个进程崩溃,整个系统也不会崩溃,也永远没有内存不足的提示出现。

以上,可以解释 Android 剩余内存总是很少的原因。“但是,进程在后台运行会耗电耗流量的啊?”这个继续解释……

Android 的多任务机制:

当进程被切换到后台时,系统暂停进程。不消耗 CPU 资源,只在内存保留运行状态,并根据应用本身设置优先级。

七个优先级:

前台进程。顾名思义,你当前屏幕正在显示的进程。

可见进程。随时需要待命的进程,例如随时需要召唤出来的输入法。

主要服务。系统的必须服务,例如电话。

次要服务。与系统关系密切的服务,例如 Gmail 的邮件推送服务。

后台进程。同样顾名思义,就是刚刚被你切换到后台的进程。

内容供应节点。没有应用实体,仅提供内容供别的应用去用的,比如日历供应节点,邮件供应节点等。

空进程。没有任何东西在运行的进程,有些应用在退出后,依然会在进程中驻留一个空进程,这样的作用是提高该应用下次的启动速度或记录一些历史信息。

结论

综上,正常的用户应用在退出之后要不就成为后台进程,要不就成为空进程。这些进程已经暂停了运行,不占用 CPU 资源和电量。在内存不足,用户需要打开另外的应用时,就会自动清除掉,所以完全不需要清理内存。相反有时清理了内存之后系统反而需要用大量的电量和 CPU 去重启必要的进程。

可是为什么有些应用在关掉了之后仍然会耗费电量和流量呢?唯一的答案是,这是一个不安分的应用。应用作者在写应用的时候就为应用申请了各种各样的主要服务和次要服务,导致用户退出后仍然继续运行。(所以后台运行最牢固的就是那些在你下拉通知栏的“XX电池医生”和“XX手机助手”。)这种现象在一些国产应用上尤其常见。面对这些乱七八糟的没良心的应用和应用作者,果断把它卸载并冲到臭水沟里面去吧,差评!

关于本文
各种回音
  1. 说: 回复他/她

    安卓理论上很好,可是国产软件乱用API权限,即使后台,也要强制推送,而根据安卓的推送后台机制,这个时候消耗的CPU是比较大的,而且因为反复唤醒,休眠,调用,耗电会明显增加,因为在国内这个不是少数,所以,你清不清理内存,都是一样的

    • 说:

      正解,国内许多大厂商都有这个问题

  2. 说: 回复他/她

    所以还是得用绿色助手来清理后台

    • 说:

      其实助手自己就是最顽固滞留后台费电的东西。。。。只是他从来不告诉你它其实才是最费资源的。。不信你多安几款,他们的统计都不一样的。。

  3. 说: 回复他/她

    安卓就是事儿多

  4. 说: 回复他/她

    所以这也是我宁愿放弃自己喜欢的大屏,也要用iphone的原因,实在受不了各种刷机、清后台、卡顿、不root通知栏乱七八糟

  5. 说: 回复他/她

    没那么简单的,JAVA的内存回收机制没有想象中的那么好

  6. 说: 回复他/她

    为什么要清内存,因为不清内存卡啊,连个应用都没法切换,还谈个j8

  7. 说: 回复他/她

    我就经常清内存,清内存不是因为卡,是因为莫名其妙的什么破应用就会搞得手机发热!谁能分得请哪个应用老不老实,干脆一色清掉,不需要了留着它干嘛

  8. 说: 回复他/她

    那ios系统是否也是这样呢?

    • 说:

      安卓是在内存足够的时候运行所有后台程序,ios是即使足够的时候也会关闭原先运行的

  9. 说: 回复他/她

    理论上安卓会自动释放内存,实际上有时候新运行个APP,卡半天显示不出来,必须手动清除内存才能进入。

    所以,不要太相信安卓所谓内存运行机制.

  10. 说: 回复他/她

    实际上,真的会运行软件卡死,开太多了真心卡

  11. 说: 回复他/她

    理论上是这么说,但我用的老爷机魅族mx在清理内存后确实运行速度有所提升,不过我是手动停止程序的

  12. 说: 回复他/她

    如果android有ios一样严格的应用商店,那么Android确实不需要清理内存,但是多数应用尤其国内的应用都喜欢获取更多权限处理更多用不到的功能,从而造成内存一直占用。用过Android的人都知道,不清,那么你要运行一个大应用基本会卡死。

  13. 说: 回复他/她

    不清内存?我手机热得都快爆炸了。我还是MTK芯片的,理论主频低,不应该这么热的。

    • 说:

      正是因为主频低,所以必须一直满负荷运转才能满足要求。小马拉大车能不吃力嘛

  14. 说: 回复他/她

    国内的应用厂家,呵呵

  15. 说: 回复他/她

    理论是这样,但实际表现,比如在512M单核的老设备里体会最深,安卓4.3版本,不清内存,卡的基本没法用。

    • 说:

      4.3。。。光系统必须服务和进程就多少了。。这些东西又不能被清理。。

  16. 说: 回复他/她

    我玩了几个android机子,卡的不行了,换了个二手带锁版iphone 4s,虽说有点点卡,但比android好多了!

  17. 说: 回复他/她

    大部分国产应用基本上什么权限都要。
    就像大部分去电脑城装机的,Windows系统一定要装盗版的“旗舰版”。

  18. 说: 回复他/她

    现在连单机游戏都要开机自启和通知权限 不清内存没办法啊

  19. 说: 回复他/她

    没用xxx大师前,卡的跟逼似得,一打开网络下拉框都是应用的通知,打开通讯录都等半天,不清内存,不用xxx大师???小编完全是转来的吧,完全没结合实际的样子

  20. 说: 回复他/她

    QQ,微信,百度音乐,等等大部分带推送功能的都是消耗内存的大户

  21. 说: 回复他/她

    我會告訴你,我安裝淘寶助手就是為了賺積分寶麼

  22. 说: 回复他/她

    又拿这个说事,贮留在内存里的耗电可以忽略不计,但是你以为那些程序仅仅只是驻留在内存么,那是实实在在的在后台运行啊,在占用内存啊,不是驻留啊,驻留和运行你懂么,你懂么,你懂么

  23. 说: 回复他/她

    如果所有应用全部来自谷歌商店,不会卡。

    • 说:

      呵呵,谷歌商店和国内商店唯一区别就是谷歌上不去

  24. 说: 回复他/她

    理论很好。可是对于现在的app不按规矩出牌啊

  25. 说: 回复他/她

    安卓就是垃圾。。。
    我运行着一个内存稍大点的程序。这时候有事需要发个微信,切出去,再切回来,进程被消灭。。。未保存一切从头开始。。。

    就好比我正在吃饭,吃得正高兴,中途去了一趟WC,回来就忘了自己干嘛了。。。连姓什么叫什么都记不清了。。。。

    • 说:

      扯蛋,ios 1g ram你这屁眼舔的好

  26. 说: 回复他/她

    如果配置足够,确实不需要清理。

    如果容量足够,确实不需要清理。

    如果钱也足够,确实不需要清理。

    如果点亮足够,确实不需要清理。

    摸着自己左心房想想,这四点哪个足够了?