Android 系统内存扫盲点
转自:http://dev.10086.cn/cmdn/bbs/thread-75471-1-1.html
Android 是如何管理进程的
在Android 里,进程和程序是两回事,程序可以一直保留在系统里,但是没有任何进程在后台“运行”,也不消耗任何系统资源。所有的程序保留在内存中,所有可以更快的启动回到它之前的状态。当你的内存用完了,系统会自动帮你杀掉你不用的任务。
需要明白的是,Android 用RAM 的方式,跟windows 啥的是两回事。在Android 的世界里面,RAM 被用满了是件'好'事。它意味着你可以快速打开之前打开的软件,回到之前的位置。所以Android 很有效的使用RAM,很多用户看到他们的RAM 满了,就认为拖慢了他们的电话。而实际上,是你的CPU——当你的软件真正运行时用到的东东——才是拖慢手机的瓶颈。
为啥说进程管理软件是祸害
很流行的各种进程管理软件都说帮你释放内存是件好事,但这是不正确的。打开这些软件时,他们告诉你“运行”的软件和杀死他们的方法。你也可以在“服务”里面看到到底程序的哪些部分在“运行”, 占用了多少内存,剩余多少内存。所有的这些都告诉你,杀掉这些程序能够释放内存。但是这些软件都没有告诉你这些程序到底消耗了多钟,而仅仅告诉你能释放多少内存。要知道,用满了内存实际上是件好事,我们要注意的是CPU,真正消耗你的手机资源,消耗电池的东东。
因此,杀掉程序通常是没有必要的(尤其是用"autokill"方式杀掉程序)。更严重的是,这样做会更快的拖垮你的手机能力和电池性能。不管是手动杀掉进程,还是自动的杀掉进程,重新打开程序,你实际上是在用CPU 资源来做这件事。
事实上,这些进程管理软件消耗了系统资源。而且,这些软件会莫名其妙的杀死其他程序造成乱七八糟的结果(尤其对些小白来说)。所有的这些,告诉我们,你的手机在用它自己的方式工作,特别是你只是个小白用户,用这些进程管理软件耽误的事情比得到的要多。
那么你应该怎么做呢
这么说吧,各种程序开发水平是不一样的。很多人以前或者现在使用这些进程管理软件,释放内存,感觉手机快了那么一点。造成这个问题的原因是,你用的软件本身程序写得太烂了,比如,有得程序完全没有必要联网时,还在联着。这个时候,杀掉这些程序,你能得 到好处,就是说,只有你知道你在干什么得时候,杀掉让你爱但是很烂的程序才能帮上你。
事实上 ,很多开发者,包括ROM 开发者,如果用了进程管理程序,当你提交bug 报告时,看都不会看一眼(Cyanogen 时这么干的,我不知道MIUI 是不是),所以能不用就不要用了,除非你真的知道你在干什么。如果你真关系你的手机的表现和进程,还是多关注下系统进程,看看里面说各种程序都消耗了多少资源,如果某个程序消耗太多,时不时杀掉它可能会有那么一点帮助。
总的来说,进程管理软件正确的用途是杀那些出错的程序、会导致死机有BUG 的进程以及疑似病毒进程等,而不是一味地追求内存空得多程序在内存里放着,CPU 不调用,它就是死的,一般程序你退出了它就不再运行了,不占用CPU 资源(占用了CPU 时间这个才是要耗电的),这就是2.2 以上版本系统那个“快速启动”的工作原理。
[解决办法]
其实也不能说在Android 里,进程和程序是两回事。android仅仅是充分利用内存,记录上次状态,快速恢复状态。如果非要考究,就考究一下程序的退出,比较有意义。