自己学习 Android 开发也有两三年了,一直觉得只要程序设计得合理的话,一般来说是完全不用关心系统还剩余多少内存,并且频繁清除进程的。Android 会自己管理每一个程序的运行周期,按需分配与释放内存。如果之后要运行大型程序,系统会自动释放不必要的程序占用的内存空间,也并不需要手动操作。而没有在运行的空进程,按照开发文档的说法,甚至可以以很小的代价来提高重启程序时的速度。

自己也是从来不清除进程,也没有觉得有问题。但是看到很多人热衷于每隔一段时间就清除进程,而且表示有效果,所以也感到有些疑惑,就想请教一下,是不是真的有很大的影响?还是仅仅是人云亦云的心理作用?当然,如果不是为了清除占用了内存空间的空闲进程,而是为了关闭在后台运行的程序的话,关闭不用的程序当然可以使系统更流畅,因为那些程序也会消耗处理器资源。不过一般设计良好的程序,如果要在后台运行,一般都是有特定的目的的,清除后就无法正常运行了不是么。


多数都是使用windows留下来的习惯,也有强迫症的倾向。按照安卓所说的内存释放机制的确是没必要杀进程的,除非运行一下大程序之前,可以为它腾出空间。
256mb内存需要
"不过一般设计良好的程序"这个假设是不成立的

很抱歉的告诉你这种良好的程序不多

就个人使用经验来说总会有一堆乱不用的进程在我会干掉他 也没出现什么不正常不仅会快而且会更省电


不需要,Java 由于有 JIT 的存在,启动一个程序总有额外的编译时间。后台程序主要起到了缓存的作用。因而把程序留在后台可以避免 JIT 编译器不断的编译程序,节省了 CPU ,也就节省了电池。

不完全同意 @pansz 的说法。

jit编译占用的cpu和时间其实是微乎其微的,对于大部分程序来说,编译时间是极短的,所以很难说用户会从减少jit编译次数而受益

相反 后台进程大概有这么几种:

1是处于OnStop()/OnPause()状态的进程

2是各种用户编写的service/Receiver

3系统service

对于系统service 如果你是非root用户是没法结束,而且会对android系统稳定性造成影响

但对于1和2,显而易见的是OnStop()/OnPause()和 broadcastReceiver/service是开发者自己编写的,开发者来控制内存的释放和执行的操作,这些很有可能会占用大量的系统资源,比如后台播放音乐,和服务端通信,定位等等。

所以说这些后台进程的资源消耗情况是很严重的,而且据我了解,现在比较火的android app后台都会跑著一两个service

所以说,清除android进程对性能提高是很明显的,这也和我们观察到的现象相符,你打开多个app然后点Home回到桌面,各种操作都开始不流畅了。。。
我猜是因为 热衷于清除进程的人通常也装了好多不守规矩的应用 杀一下反而清净 负负得正了

本来是不需要的,内存不够了会自动杀掉老的进程。但是很多应用都开了后台服务(为了推送等需求),这一部分除非在内存极度紧缺的情况下不会被杀掉,并且会持续的占用CPU时间,所以杀进程的做法确实是有效果的。

对比iOS,因为不允许后台运行任意代码,所以不需要这种杀进程的操作。

PS:如果Android有统一的推送系统(比如C2DM),大部分应用就不需要后台进程,这样也就不需要杀进程了。
有些程序像微薄、微信等这些通信的程序,在后台会不断消耗电量。如果可以终结那么还是有点好处的。
内存1G以上不需要,不然程序多了一会内存就全被占了,很多程序只是退到后台,内存还会跑,然后机器就会很卡很卡也看你安装的什么软体了,你懂的!
难道大家接受这种情况么- -:即使程序的推送服务随著杀进程被一起关掉,推送全部没有,也要去杀进程去争取这一点内存/电量么?我觉得这有点本末倒置啊
android的内存管理机制决定了没必要频繁杀进程。首先,一个进程被你挂到后台去之后它是不占任何CPU资源了(带服务不算!)也不消耗电量,只占用一部分内存以保存运行状态,以便下次能够快速启动,那么当后台进程数量一多内存就会减少,当内存减少到一个预先设定的阀值时,系统就会自动按照一个结束进程的优先顺序表结束表中优先度最高的进程为新程序腾出足够的内存空间,一般来说自动结束进程所用的时间可以忽略不计。如果你突然要运行占用内存很大的程序,那么系统一下子需要结束大量的进程这时候就需要一点时间了,这个时间就会在载入时表现出载入缓慢,所以当运行很占内存的程序时还是可以手动先结束一些进程,平时还是不用结束,留著加速程序启动用吧。

从我个人体验上来讲,其实似乎不是「隔一段时间」就需要清除一次进程;因为我之前手机的软体都默认安装到「手机内存」里的,然后手机任务管理器总报告内存低的异常信息,所以在需要装软体什么的之前确实需要杀一下进程才能装上的(不过是比较大的游戏软体- -普通的小软体不用在意这个。)

其实吧,我想这个还是和习惯有关系吧;一打开任务管理器看到一大堆自己不认识 也没使用过的进程,一看内存占用了那么多,大部分人就会有种杀掉的冲动 吧。
推荐阅读:
相关文章