一、 虚拟内存有什么用:个别软件会需要虚拟内存
即便你的内存已经大到“无可救药”的地步,也不应该将虚拟内存关闭,因为除了传统的为RAM“后备”这一功能外,Windows也会利用虚拟内存执行一 些特定操作。此外虚拟内存的打开还有助于提高内存命中率及保证系统稳定,个别软件(如Photoshop、3Dmark等)在运行时也会需要虚拟内存。
二、 流言终结过程详解
1. 虚拟内存并不是“物理内存第二”
我们这里所说的“虚拟内存”,严格意义上应该称之为“分页文件”,因为从微软的官方文档来看,“虚拟内存”等于“物理内存”+“分页文件”总和。通俗来 讲分页文件是指我们硬盘上一个硕大无比的文件,名为“PageFile.sys”(将资源管理器设为显示系统+隐藏文件后可见)。
早期计算机内存(RAM)普遍偏低,为了解决软件运行效率不高等问题(内存不够时就需要频繁换页,将暂时不用的程序移出内存,而将即将运行的调入进 去),Windows便在硬盘上开辟了一块区域,作为“虚拟RAM”使用。一旦物理内存无法满足当前需要时,分页文件就会自动充当内存实现部分物理内存功 能,这便是大家熟知的用分页文件扩充内存功能。
“虚拟内存”严格来说应该叫“分页文件”
那么当物理内存基本满足要求时,上述情况又会变成什么景象呢?举个例子吧,比如有一个图书馆,里面共有10000本图书,我们姑且将它看作是电脑的硬盘 总容量;然后你可以在门口放置一个小书架,容量50本,这个相当于Windows的分页文件大小;接下来则是每人每次的借阅极限值,为5本,相当于物理内 存数。
每次当你把手中的5本阅读完毕后,就可以到小书架或者图书馆里继续挑选。当然我不说大家也知道,从50本里找显然要10000本里找快得多,于是分页文件的第二大作用便出来了——即加快资料存取。
从上面的例子可以看出,分页文件有着帮物理内存提高“命中率”和“稳定性”的作用,因此即便你的物理内存再大(比如一次可以借阅10本或20本了),也 终将会有把书看完的那天。此时如果再找书,依然会遇到之前那个问题,究竟是从50本里找快还是直接去10000本里找快。因此从这一点上看,物理内存大小 其实与禁不禁用分页文件是没有任何联系的。
2. 分页文件对性能影响多少?
为了说明分页文件对于资料的存取效率能有多大影响,我们照例设计了一个小实验加以说明。测试过程很简单,即通过PCMark7模拟日常应用来对Windows执行一次基准评分,评分背景是标准的Windows和关闭分页文件后的Windows。
注:测试项选择的是默认的“PCMARK suite”。
PCMARK7专业版
关闭分页文件前后成绩对比
测试中我们选择的是很多用户都很熟悉的“PCMARK suite”,内含了视频播放、视频转码、图片处理、网页浏览、网页解密、图片导入、3D游戏等若干个子项,可以说是用户日常工作的一个缩影。
可以看到,在关闭了分页文件后,系统评分有了一个明显下降,表明很多应用在关闭了分页文件后都出现了不同程度的变慢。而由于我们的测试机使用的是4GB 内存(64bit系统),正常情况下并不会导致物理内存完全用尽,因此整个测试基本上可以看作是分页文件对系统性能的影响。
3. 物理内存充足时分页文件工作吗
虽然实测结果表明分页文件对于目前的大内存系统仍然有提高性能的作用,但我敢说,很多网友肯定还有另外一个疑虑——分页文件到底和物理内存是个啥关系?频繁的硬盘读写难道真不会拖累系统运行么?
要回答这个问题其实也很简单,只要借助一款第三方软件——AIDA64就可以了。上图是硬件检测软件AIDA64对笔者电脑的检测,可以看到当前电脑的 存储系统是由4GB物理内存、4GB分页文件共同组成,其中物理内存+分页文件的总和被AIDA64称作交换区(Windows称“虚拟内存”)。那么当 一款程序启动时,它究竟会首先使用物理内存?还是按照整个虚拟内存的概念同步使用呢?
这里需要说明的是,微软有关虚拟内存的定义是与 AIDA64不同的,它是将物理内存+分页文件视为一个虚拟内存(相当于AIDA64中的“交换区”),而AIDA64则是将物理内存+交换区视为虚拟内 存。说实话AIDA64的这种划分比较令人费解,因为将一个现实数值(物理内存)与一个虚拟数值(交换区)合并原本就没有什么实际意义。因此这里我们主要 还是以微软定义为准。
最终答案非常明显,就是当物理内存用尽后,Windows才会启用分页文件。如果你不信,不妨也像我一样打开 AIDA64(软件支持实时更新,可以很直观地看到各个数值的变化),然后随意启动几款程序,观察一下“页面文件”的数值变化。你会发现随着程序启动,物 理内存和交换区数值都在持续变化,唯独页面文件却始终保持着0MB。
换句话说,在物理内存可以满足当前需要时,Windows并不会弃用高速内存而选用速度更慢的硬盘文件(分页文件),因此我们丝毫不必担心开启分页文件会影响系统整体性能,除非是你的物理内存真的无法满足系统需要。
4. 分页文件如何设置才合理
那么又一个问题来了,如果说分页文件在现今的Windows中仍然有利无弊的话,那么我们究竟是应该让Windows自行管理,还是给它设定一个具体的数值呢?
有关这个问题,笔者曾经和一位微软工程师聊过,双方的焦点在于,分页文件是一项很古老的设置,最初是将其设定为一个可变量,官方推荐是物理内存的1.5倍(即你在系统→分页文件设置框内看到的推荐值)。
但要注意的是,这条规则的设计背景是在数十年前,那时的内存普遍只有几十兆(服务器也不过如此)。但时至今日,当物理内存已经跨入GB时代,甚至个别用户已经用上16GB以上的超大内存,再去一昧照搬从前的标准显然并不适合。
系统托管真的合理么?
依然还是开头图书馆的例子,现在的情形可以变更为馆藏容量未变(10000本),但每人每次的可借阅数升级为15本(即物理内存变大了),相应门口小书 架的图书量也增加为500本(分页文件按比例扩大)。那么问题来了,如果说50本的小书架可以帮我们提高效率的话,那么500本书架所消耗的时间又是多 少?如果碰巧这500本中仍然没有你想要的,需要重新进入图书馆(10000本)里继续查找的话,系统效率不慢才怪。
回到现实版中来, 小书架容量的暴增其实就相当于分页文件扩张(比如16GB内存按微软标准计算就是16GB~24GB),那么在现行机械硬盘的读取速度下(这里不考虑随机 读取与线性读取区别),若想遍历一遍16GB或者24GB空间所花费的时间,恐怕也是相当大的。换句话说,如此一来分页文件非但没有提高系统性能,反而真 的会成为系统性能的拖累!
为了更好地说明结果,我们仍然通过PCMark 7进行了一次基准测试。与先前测试略有不同的是,此次主要是对分页文件的大小进行了调整,根据测试机内存划分为“系统托管(实测为4GB)”、 “512MB”、“2GB”、“4GB”几档,当然也没忘增加了一个大容量“12GB”。
不同分页文件大小对于系统性能的影响
最终结果一目了然,随着分页文件的增长,系统评分开始成比例提高,到达4GB时几乎出现了此次评测最好的成绩。但当笔者人为将其升至12GB时,整体评分又有了明显下降,从而最终佐证了我们先前的推测。
虽然上述测试已经大体推算出一个分页大小,但我们并不建议所有用户都采用这一设置。原因就是每个人的硬件配置各有不同,大锅饭式设置并不一定适合每一个 人。考虑到分页文件大小可能对性能的影响,我们建议在用户内存不超4GB的情况下,可以选择由Windows自行托管,而当用户内存高于4GB,则应使用 手工设置的方法,将分页文件限定在一个范围之内(建议不超6GB),这样既可保证系统正常的吞吐需求,也不至于因分页文件过大而拖累系统速度!
此外对于动手能力较强的网友,也可自行通过“性能监视器”(perfmon.msc)添加一个“Paging File Usage”来统计自己电脑中分页文件的实际利用率,借此精确计算出自己的电脑究竟适合多大的分页文件。只不过考虑到该步骤操作较为繁琐,这里就不单独介 绍了。
写在最后
事实上就像Windows中的很多组件一样,虚拟内存并不像大家 想象得那样简单,除了众所周知的补充内存功能外(实际上现在这个用途已经很少会用到了),它还承担着提高物理内存命中率及稳定性的作用。甚至某些时 候,Windows的一些核心功能也会用上虚拟内存(如SuperPrefetch、内存转储等)。
此外个别第三方软件(如 Photoshop、3Dmax等)也是虚拟内存的忠实拥护者,强行关闭很可能导致运行出错或崩溃。当然考虑到硬盘开销及整体运行效能,用户最好根据自身 条件对分页文件大小进行限定,尽量不要让分页文件过于庞大。总之在这个问题上,并没有什么一定之规,更多的是需要使用者灵活处理。
这个提示真的不是忽悠你的
附:几个小问题的解答:
1. 分页文件移至别的分区是否可提高性能?
根据微软的设计,操作系统允许同时建立多个分页文件,而且Windows会很智能地从中挑选出性能最高的进行读取。但要注意的是这个设计只针对于多块硬 盘,比如你的Windows装在硬盘1,而分页文件设在硬盘2,那么由于操作系统可以同时从两块硬盘上读取数据(一块读取操作系统,一块读取分页文件), 最终结果就是Windows的效率大增。但如果用户只有一块硬盘,将分页文件由C盘转移至其他分区,理论上并不会有明显改进,除非是你的C盘空间过于紧 张!
2. 设固定大小可否减少硬盘碎片?
有人认为Windows默认的可变大 小,常常是导致分页文件出现碎片的主要原因,这个问题我们需要从另一个角度考虑。正如大家已知的,分页文件的一个重要特性是作为内存补充使用(虽然这种情 况目前已经很少,但不排除完全没有),因此当你偶然遇到一个极耗内存程序时,还是有可能将虚拟内存耗尽并导致最终崩溃。那么此时如果使用的是默认可变内 存,相当于给了Windows一次腾挪辗转的机会,也许崩溃就不会发生。
当然这里要特别说一句的是,如果你的虚拟内存大小合理,一般情况下是不会导致Windows随意调整分页文件大小的,而这样的话产生磁盘碎片的机率也就不是很多了。
以上是关于虚拟内存有什么用和虚拟内存怎么设置最好的一些讲解。