安卓是基于Linux系统开发出来的,这点非常的重要,因为我相信有很多人,甚至一些高手会忽视这一点而陷入了一个误区,什么误区呢?就是手动关闭成寻,追求更大的剩余内存。我们已经习惯Windows的系统,习惯了空余内存更大运行更快的概念。 大家在使用安卓手机时也会保持着这个概念。常常手动关闭程序以节约内存。其实大可不必。作为安卓系统,或者说Linux系统,它与Windows系统是两个完全不同的系统,所以他们在内存上的看待是完全不一样的。安卓大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。
如果大家知道Java的话,就能更清楚这机制了,因为Java本身有个垃圾回收机制。和Java的垃圾回收机制类似,安卓系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上它并不影响速度。相反加快了下次启动应用的速度。这本来就是安卓标榜的优势之一。
如果人为去关闭进程,没有太大必要,特别是使用自动关进程的软件。(这就是我所说的为什么不需要手动关闭进程了。而且我相信作为一个稳定的系统,本身各个数值的设置应该已经是最均衡的,所以没有必要一味追求数值的大小,够用即可。)
那大家可能会问了,那为什么内存少的时候运行大型程序会慢呢?这其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。
这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。(这就是为什么大型程序刚开始启动时很慢,但到后来逐渐恢复正常速度的原因。当然调整的时间还要看机子的好坏。)
那么,进程管理软件有无必要呢?有必要的。就是在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度。但一些小程序,完全可交由系统自己管理。有人可能又会问了,如果不关程序是不是会更耗电。
还有网友关注会不会费流量。我说说安卓后台的原理,大家就明白了。安卓的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态,耗电不大不费流量。(这个就是为什么我们把有的程序切出去后,再重进该程序时,还是会到程序的主界面)。
但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务。服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了。这个在进程管理软件里能看到,标签是service。至于广播什么的我就不涉及了。所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个安卓的优点呢?
还有一个,为什么安卓一个应用看起来那么耗内存。这是因为,安卓上的应用是java,当然需要虚拟机,而安卓上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存。(所以大家会发现,其实正常使用安卓系统的话,很少死机的,当然换的固件不好的情况除外啊。)
以上这些设计确保了安卓的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现。(大家可能是用Windows用习惯了,被内存的概念毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要。)