很多人会有这个疑问:现在手机的内存都已经12G起步了,为什么电脑还是4G、8G起步呢?

首先,我们需要先了解以下几个概念:

  • 什么是内存?
  • 电脑是怎么管理内存的?
  • 手机是怎么管理内存的?

什么是内存?

软件的代码、数据是安装、储存在硬盘上的

在计算机诞生初期并不存在内存条的概念,当我们打开软件的时候,设备的CPU(处理器)会直接读写硬盘中的数据来运行程序。

然而随着CPU处理速度大幅提升,硬盘的读取写入速度依然比较慢,因此从硬盘中直接保存读取数据太浪费时间,因此我们发明了"内存"。

其实内存的发展和原理是非常复杂的,这里就不深入解释了,具体可以百度百科一下

因此现代计算机中,操作系统先把需要运算的数据从硬盘读取到内存中保留,而内存的速度非常快,所以只需要从内存调到CPU中进行运算,当运算完成后CPU再将结果传送出来,然后内存再和硬盘交换不需要那么快传输的数据。以此达到高速处理数据的目的。

其实在电脑中还有“虚拟内存”,如果内存较小,可以在硬盘中开辟一块空间充当内存来使用。

然而不同代码语言、不同平台,它们对内存的管理机制是不一样的,这也产生了电脑和手机所需内存的差异。

电脑是怎么管理内存的?

通常来说,我们使用电脑的时候,都会打开几个软件运行,比如一边挂QQ,一边打开网页,一边听歌等等。每打开一个软件,内存中就多出一块,来存储运行的软件数据。当我们关闭软件后,系统就会把这个软件的数据从内存中释放。

举个简单的例子,开机后第一次打开word文件速度比较慢,而当word软件开启之后,再打开另一个word文件几乎是秒开。因为word程序已经在内存中了,只需要再读取这个文件就可以了。

打开一个软件,就给你分配一部分内存,不够我再给你一些,直到内存分配完毕。

这就可能会发生一个极限情况,当打开的软件过多,那么内存可能不够用,而系统又不会自动清理你的其他程序,最后的结果就是"蓝屏“。

不过现在随着电脑的内存也越来越大,系统越来越智能,因为内存溢出导致的蓝屏也越来越少。

因此电脑4G和8G已经可以足够应对日常生活所需。

手机是怎么管理内存的?

手机(Android)的内存管理机制就和电脑不一样了。因为安卓是基于linux系统开发的,它有一个特点就是“内存能用就用”,也就是安卓系统会所有运行的APP都是真后台,都处于活动状态。

其实这是一个优点,虽然占用大量内存,但是能减少用户使用APP的响应时间,你点击APP的时候,会更快些。如果你的手机内存不够的情况下,它就会关闭一些后台APP,也就是我们常说的杀后台,通过这种机制,确保当前使用APP的运行。

有人认为后台挂着程序很费电,事实上Android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。所以有的程序切出去重进回到主界面。至于QQ、音乐播放之类的程序可以在后台运行,是因为这些程序在后台开启了服务,而服务可以后台运行,所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源。

举个例子,比如我们微信发完消息切换到QQ去,这个时候微信是被冻结的。但是当我们切换回微信依然可以从刚才的界面继续,这就是因为"微信"仍然在内存中,只不过现在又给他CPU资源继续运行。

为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略(也就是决定释放哪个软件的内存),这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。

但这不是无限制的,因为我们的内存是有大小的,当内存达到了一个阈值,这个时候安卓系统会自动清理或者压缩前面的一个或多个软件,直到内存足够运行新程序为止。

举个例子,小内存手机可能只有2G内存,系统就占了1G,剩余1G,这个时候我打开微信,占用了0.8G,这个时候我有打开QQ,QQ占用0.4G,这个时候系统+微信+QQ的内存量已经超过了3G,因此打开QQ的时候会释放压缩微信内存,切换为微信后,又需要先清理QQ,再加载微信,于是就损失了大量加载时间。

很多用户看到他们的内存满了,就认为拖慢了他们的手机。而实际上,真正拖慢你手机的瓶颈,是你的CPU。

另外呢,因为Android系统是采用Java语言开发,因此运行程序需要虚拟机,而且每一个app都需要一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存,比如手机需要几百M的内存的微信,在电脑上只占用100多M内存。

总结

由上我们可以看到,手机会极大程度的使用内存以提高软件打开速度。而电脑依靠用户手动关闭程序以释放内存。

所以,由于系统、构架、使用环境的不同,单纯比较手机电脑内存孰大孰小是没有意义的。也不必纠结手机剩余多少内存的问题,有的手机系统给用户显示的内存使用情况也未必准确。