saber酱的抱枕

生于忧患,死于安乐

09/27
17:25
软件

正确认识虚拟内存

Windows 虚拟内存

有些人(或者很大一部分?)觉得虚拟内存的作用是当物理内存不够用的时候,临时保存数据,腾出内存空间所用。又因为读写硬盘比较慢,进而觉得如果操作系统去读写虚拟内存,会拖慢电脑速度。所以当他们觉得自己的内存足够时,就会去关掉 Windows 的虚拟内存。

很惭愧我以前也这么想过,但是关掉虚拟内存之后,有些程序启动时会报错“内存不足”,即使物理内存够用也是一样。事情似乎有些不对劲了。那么事实到底是怎样的呢?今天我看了《操作系统概念》,才纠正了自己的一些错误想法。

Windows 虚拟内存

从虚拟内存的设计初衷可以看出,它并不是为了“内存不够用的时候再用虚拟内存”而存在的。即使内存够用,也可以把程序目前没有使用的部分放进虚拟内存里。

那么最关键的问题是,虚拟内存会拖慢电脑速度吗?当然不会啦,因为它能减少物理内存的使用量,从而减少电脑的卡顿。

Windows 虚拟内存

此电脑 8G 物理内存,3G 多的虚拟内存。虽然上图显示内存的“使用中”是 6.1G,但实际上使用量是“已提交”的 9.5G。

可以看出,并不是物理内存不够时才会使用虚拟内存的。操作系统的策略是把活跃的数据放在物理内存里,不活跃的数据放在虚拟内存里。物理内存多出的空间放缓存很划算。

如果去掉了虚拟内存,导致物理内存里有大量不活跃数据占据空间,做不了多少缓存,反而会导致系统流畅度下降。

所以就算物理内存够用,我也还是推荐开启虚拟内存。用廉价的硬盘空间换取宝贵的物理内存,岂不美哉?

有的人担心系统读取虚拟内存里的数据会比较慢,读取硬盘当然比内存慢,但是我觉得不用过于担心。因为不活跃的数据确实很少会用到,而且现在 ssd 硬盘越来越多了,不像以前机械硬盘那样慢。

话说要是小白用户看 win8 之前的任务管理器,看到 8G 内存只用了 6G,觉得自己内存够了,可以关掉虚拟内存了,那就真的悲剧了(滑稽)

以前我还有个误区,因为虚拟内存位于硬盘上,我就以为它里面存放的数据还是文件的形式,等需要的时候才读取进物理内存里,转化为内存形式。其实不然,虚拟内存就是当作内存用的,文件被加载进虚拟内存的时候,就已经分配好了内存地址,由操作系统管理。把它当作插在硬盘上的一段内存就好了。

正确认识虚拟内存

  1. locationiskey
    Microsoft EdgeMicrosoft EdgeWindowsWindows

    说实话这些没有虚拟内存就跳错的总觉得是软件设计有问题……
    原则上OS层面应该是把物理内存和虚拟内存处理好了,对应用软件是一样的才对……
    不过除非内存够大需求又小,总还是开着……

    不过虚拟内存塞ssd不怕磨损ssd嘛→_→

    回复