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