补充解释一下为何说某些已经被用户退出程序占用了部分内存,却并不增加耗电的原因。
我们知道,内存是存放处理器正在执行程序的数据以及指令的地方。在手机启动之后,操作系统会初始化运行环境,主要就是一些系统服务(顺便说一下kernel,它是一个硬件与操作系统之间的抽象层,kernels向下负责驱动底层硬件,比如写一个读写一个扇区,读写IO等非常基本的操作,而向上负责隔离软件与硬件,防止软件破坏硬件,提供给操作系统操作这些硬件的API。所以kernel是常驻内存的,要比操作系统启动的更早,或者也可以被称为广义操作系统的核心服务)、用户定义的自启动程序。凡是一个新的程序开启,操作系统都将分配一个进程,只要有进程就一定分分配给存储资源,操作系统就会在内存中划出一部分空间给与程序以使操作系统调度底层文件服务将这些程序的指令和数据由ROM或者是SDCARD(电脑中是由硬盘)中加载到内存中。android的内存管理机制已经由帖子说过,当这些程序退出后,这些指令和数据,并不真正的退出内存。那么大家就有疑问了,占用了内存为何不耗电。这个主要是内存的存储介质RAM的性质来决定的。简单的说,RAM是一种易失性的存储介质,必须周期性的刷新,才能保持原来的内容。内存在工作时,只要开机,他就周期性的刷新RAM单元,即使这些内存刚开始不存在有效数据也是一样的。所以内存中有数据和无数据,本身消耗的能量是一致的。那又有人会问了,这个不对啊,内存在工作的时候,肯定会消耗能量更多啊,是这样的。只有从内存中读取或者是改写的时候,才会消耗额外的能量。所以也就是说当程序将程序的数据和指令由后备存储(ROM或者是SDCARD)调入内存的时候会消耗比较多额外能量。用户将这些程序退出时,这些程序的内置资源只是被标示为可以被占用状态,但是不会将这些数据和指令真正擦除,如果你真正清空了内存,那就是把数据和指令擦除了,反倒说将消耗更多的额外能量。如果你再次打开这个程序的话,将再次需要从后备存储中读入这些数据和指令,将再次增加功耗,以及额外时间开销。