经常用安卓手机的人会感觉到一个问题:不论我的手机的运行内存是512M、1G、2G、3G甚至是4G,只要手机一打开,然后随便点开一些什么应用,不一会儿就发现内存就所剩无几了,我就是活生生的一个例子。
他们这样思考过:当我的手机内存是1G的时候,我经常玩着玩着内存就只剩200多M了,那么是不是意味着我常用的这些App大概就占用了1G-200M=800M的空间呢?如果我的常用App大概占用了800M的空间,那么,当我换了内存为2G的手机的时候,是不是大概就可以剩余2G-800M=1.2G的空间呢?他们怀着这样的憧憬买来2G内存的手机的时候,立马就懵了,因为根本就不会剩余1.2G,玩着玩着大概就剩400来M了,哭瞎!!!
所以,很多人就会对安卓手机产生吃内存的印象,而不仅是吃内存,简直是壕无人性的无底洞吃内存,多大的内存都填不饱似的。想想自己玩电脑的时候,系统占多少内存,每个应用软件占多少内存就可以直接的计算出来,这些软件占用的内存都加起来就是总内存消耗量,你啥时候关闭一个软件,对应的内存嗖的就降下来了,这样非常好理解,苹果系统也类似,而安卓系统的内存却完全不遵守这样的规律,让人看不懂。
那么,到底为什么会出现这样的情况呢?你要是直接这样怒气冲冲的跑去找谷歌,质问他们设计的系统为什么这么吃内存,他们的回答估计会让你目瞪口呆,因为他们会说:有内存不用,你傻啊?懵了,有木有?完全不懂谷歌的大神们在想什么。不过不要紧,谷歌的大神们神一样的语言听不懂,小编用人类的语言给大家解释解释~
首先大家反问一下自己:为什么我们潜意识里会觉得内存剩的越多越好?似乎如果平常我们的电脑手机只消耗了30%-40%的内存代表着我的电脑手机性能强悍,似乎只有当我还剩了一大半内存的时候,我的手机电脑的运行速度才会快。但事实是这样的么?我们现在的设备运行速度的快慢和剩余内存的大小有关系么?回答这个问题之前我先来带大家看一看一个一个普通的电脑程序在运行的过程中到底发生了什么。
内存的全称叫内部存储器,既然有内部存储器那就肯定有外部存储器,没错,现在电脑的主要外部存储器就是硬盘。内存和外存(也就是硬盘)的区别是:内存的运行速度非常快,但也非常贵,CPU可以直接读取内存里的数据;硬盘的运行速度很慢,但是很便宜,CPU无法直接读取硬盘里的数据。我们一般安装程序是把程序安装在硬盘里,点击程序他开始运行,什么叫运行?运行一个程序的本质就是要开始调用CPU来处理程序的数据。但是我们的的程序都安装在硬盘,数据也都在硬盘,前面说了CPU无法直接读取硬盘的数据,那怎么办?那就只有先把程序运行需要的数据从硬盘加载到内存里,然后让CPU从内存里读取需要的数据进行处理,处理完了关闭程序之后又把内存的数据都释放掉,一切如旧。
从上面的过程我们可以看到,影响程序运行速度的有CPU的质量,内存的质量和磁盘的质量,但是和剩余内存的大小是没有关系的,只要我这个程序的数据能够加载到内存里,他的运行速度就是一样的,跟剩余内存是50%还是20%没有关系。除非是这样的情况:你的剩余内存只剩下20%了,但是你接下来要运行一个非常大的软件,它要占用30%的内存,这时候你的内存不够用了,程序运行不起来了。
说到这里我们再来回想一下谷歌大神说的话。现在我们知道内存是十分宝贵的,因为它的数据传输速度非常快,所以为了提高整个系统的效率,我们是不是应该充分利用内存这种高速通道?你天天让一大半高速公路闲置着,你是交通部长你开心?你巴不得高速公路一直川流不息,而安卓系统的设计就是用的这种思想:内存闲置在那里我心疼,这么高速的通道我们为什么不用?这就是谷歌大神说“有内存不用,你傻啊”的原因。
安卓系统的程序启动过程和上面说的电脑程序启动过程基本相同,但是在内存管理上有很大不一样。前面说了,电脑的程序只要一退出之后系统就会立马把这个程序占用的内存释放出来,但是安卓系统不这样,安卓是这么干的:如果它检测到你的内存还充足,那么我退出程序的时候我不释放内存里的数据,为什么不释放?因为内存是高速通道,如果我的数据放在内存里,那么下一次再启动这个程序的时候,他就不需要再从硬盘里读取数据,而是可以直接从高速的内存里读取数据,这样它再次起动的速度就非常快了,充分利用内存这其实是安卓的一大优势。
可能很多人也考虑到了,程序关了数据都留在内存不实际把,那么多数据都留在内存那内存不撑爆了啊?没错,内存一般都很小,存不了那么多的数据,所以安卓系统会设定一个阈值,具体值是多少我不知道,假设是80%,那么当内存的使用量在80%以下的时候他都会把程序的数据存到内存里,当内存的使用量超过80%的时候,它的系统就会去回收内存的垃圾了,回收内存的时候他有一个优先级,会先回收掉那些相对不怎么重要的的内存数据,使得你的内存一直保存在80%这个阈值附近。
所以,这就是为什么我们经常感觉到安卓手机内存不够的原因,其实它是够的,它的内存使用量一直徘徊在80%这个阈值附近并不代表它现在缺内存,因为只要你说你需要新内存,它分分钟给你释放出一堆内存出来。这种内存设计其实是非常先进的,在安卓早期感觉到的安卓卡顿不流畅什么的也不是因为内存不够,而是有另外的原因。
所以,以后你再发现你的安卓手机内存“不够”了,别担心,也别操心,放心大胆的用吧