大内存时代虚拟内存现在还有用吗

article/2025/8/24 13:35:23

但凡用过Windows的人,大多听说过“虚拟内存”这四个字。尤其在当年物理内存还普遍偏低的年代,虚拟内存几乎成了每一个玩电脑的人都曾摆弄过 的东东。不过随着硬件技术不断发展,内存价格逐步白菜化,我们的电脑再也不像当年那样算计着过日子,4GB、8GB已然成为市场主流,甚至16GB也开始 步入家庭市场。

  那么一个问题便来了,如果说当年的虚拟内存主要为了缓解物理内存不足这个压力,那么在如今内存早已“取之不竭”的时代,缓慢的虚拟内存是否可以就此下岗呢?今天的流言终结者,我们就从这个“老迈”的大内存 虚拟内存说起!

大内存时代 虚拟内存还有用吗?

  图1 大内存时代,我们还需要虚拟内存么?

  一、 绝对不应该关闭虚拟内存:

  即便你的内存已经大到“无可救药”的地步,也不应该将虚拟内存关闭,因为除了传统的为RAM“后备”这一功能外,Windows也会利用虚拟内存执行一 些特定操作。此外虚拟内存的打开还有助于提高内存命中率及保证系统稳定,个别软件(如Photoshop、3Dmark等)在运行时也会需要虚拟内存。

  二、 流言终结过程详解

  1. 虚拟内存并不是“物理内存第二”

  我们这里所说的“虚拟内存”,严格意义上应该称之为“分页文件”,因为从微软的官方文档来看,“虚拟内存”等于“物理内存”+“分页文件”总和。通俗来 讲分页文件是指我们硬盘上一个硕大无比的文件,名为“PageFile.sys”(将资源管理器设为显示系统+隐藏文件后可见)。

  早期 计算机内存(RAM)普遍偏低,为了解决软件运行效率不高等问题(内存不够时就需要频繁换页,将暂时不用的程序移出内存,而将即将运行的调入进 去),Windows便在硬盘上开辟了一块区域,作为“虚拟RAM”使用。一旦物理内存无法满足当前需要时,分页文件就会自动充当内存实现部分物理内存功 能,这便是大家熟知的用分页文件扩充内存功能。

大内存时代 虚拟内存还有用吗?

  图2 “虚拟内存”严格来说应该叫“分页文件”

  那么当物理内存基本满足要求时,上述情况又会变成什么景象呢?举个例子吧,比如有一个图书馆,里面共有10000本图书,我们姑且将它看作是电脑的硬盘 总容量;然后你可以在门口放置一个小书架,容量50本,这个相当于Windows的分页文件大小;接下来则是每人每次的借阅极限值,为5本,相当于物理内 存数。

  每次当你把手中的5本阅读完毕后,就可以到小书架或者图书馆里继续挑选。当然我不说大家也知道,从50本里找显然要10000本里找快得多,于是分页文件的第二大作用便出来了——即加快资料存取。

  从上面的例子可以看出,分页文件有着帮物理内存提高“命中率”和“稳定性”的作用,因此即便你的物理内存再大(比如一次可以借阅10本或20本了),也 终将会有把书看完的那天。此时如果再找书,依然会遇到之前那个问题,究竟是从50本里找快还是直接去10000本里找快。因此从这一点上看,物理内存大小 其实与禁不禁用分页文件是没有任何联系的。

  2. 分页文件对性能影响多少?

  为了说明分页文件对于资料的存取效率能有多大影响,我们照例设计了一个小实验加以说明。测试过程很简单,即通过PCMark7模拟日常应用来对Windows执行一次基准评分,评分背景是标准的Windows和关闭分页文件后的Windows。

  注:测试项选择的是默认的“PCMARK suite”。

大内存时代 虚拟内存还有用吗?

  图3 PCMARK7专业版

大内存时代 虚拟内存还有用吗?

  图4 关闭分页文件前后成绩对比

  测试中我们选择的是很多用户都很熟悉的“PCMARK suite”,内含了视频播放、视频转码、图片处理、网页浏览、网页解密、图片导入、3D游戏等若干个子项,可以说是用户日常工作的一个缩影。

  可以看到,在关闭了分页文件后,系统评分有了一个明显下降,表明很多应用在关闭了分页文件后都出现了不同程度的变慢。而由于我们的测试机使用的是4GB 内存(64bit系统),正常情况下并不会导致物理内存完全用尽,因此整个测试基本上可以看作是分页文件对系统性能的影响。

  3. 物理内存充足时分页文件工作吗

  虽然实测结果表明分页文件对于目前的大内存系统仍然有提高性能的作用,但我敢说,很多网友肯定还有另外一个疑虑——分页文件到底和物理内存是个啥关系?频繁的硬盘读写难道真不会拖累系统运行么?

大内存时代 虚拟内存还有用吗?

  图5 AIDA64检测图

  要回答这个问题其实也很简单,只要借助一款第三方软件——AIDA64就可以了。上图是硬件检测软件AIDA64对笔者电脑的检测,可以看到当前电脑的 存储系统是由4GB物理内存、4GB分页文件共同组成,其中物理内存+分页文件的总和被AIDA64称作交换区(Windows称“虚拟内存”)。那么当 一款程序启动时,它究竟会首先使用物理内存?还是按照整个虚拟内存的概念同步使用呢?

  这里需要说明的是,微软有关虚拟内存的定义是与 AIDA64不同的,它是将物理内存+分页文件视为一个虚拟内存(相当于AIDA64中的“交换区”),而AIDA64则是将物理内存+交换区视为虚拟内 存。说实话AIDA64的这种划分比较令人费解,因为将一个现实数值(物理内存)与一个虚拟数值(交换区)合并原本就没有什么实际意义。因此这里我们主要 还是以微软定义为准。

  最终答案非常明显,就是当物理内存用尽后,Windows才会启用分页文件。如果你不信,不妨也像我一样打开 AIDA64(软件支持实时更新,可以很直观地看到各个数值的变化),然后随意启动几款程序,观察一下“页面文件”的数值变化。你会发现随着程序启动,物 理内存和交换区数值都在持续变化,唯独页面文件却始终保持着0MB。

  换句话说,在物理内存可以满足当前需要时,Windows并不会弃用高速内存而选用速度更慢的硬盘文件(分页文件),因此我们丝毫不必担心开启分页文件会影响系统整体性能,除非是你的物理内存真的无法满足系统需要。

  4. 分页文件如何设置才合理

  那么又一个问题来了,如果说分页文件在现今的Windows中仍然有利无弊的话,那么我们究竟是应该让Windows自行管理,还是给它设定一个具体的数值呢?

  有关这个问题,笔者曾经和一位微软工程师聊过,双方的焦点在于,分页文件是一项很古老的设置,最初是将其设定为一个可变量,官方推荐是物理内存的1.5倍(即你在系统→分页文件设置框内看到的推荐值)。

  但要注意的是,这条规则的设计背景是在数十年前,那时的内存普遍只有几十兆(服务器也不过如此)。但时至今日,当物理内存已经跨入GB时代,甚至个别用户已经用上16GB以上的超大内存,再去一昧照搬从前的标准显然并不适合。

大内存时代 虚拟内存还有用吗?

  图6 系统托管真的合理么?

  依然还是开头图书馆的例子,现在的情形可以变更为馆藏容量未变(10000本),但每人每次的可借阅数升级为15本(即物理内存变大了),相应门口小书 架的图书量也增加为500本(分页文件按比例扩大)。那么问题来了,如果说50本的小书架可以帮我们提高效率的话,那么500本书架所消耗的时间又是多 少?如果碰巧这500本中仍然没有你想要的,需要重新进入图书馆(10000本)里继续查找的话,系统效率不慢才怪。

  回到现实版中来, 小书架容量的暴增其实就相当于分页文件扩张(比如16GB内存按微软标准计算就是16GB~24GB),那么在现行机械硬盘的读取速度下(这里不考虑随机 读取与线性读取区别),若想遍历一遍16GB或者24GB空间所花费的时间,恐怕也是相当大的。换句话说,如此一来分页文件非但没有提高系统性能,反而真 的会成为系统性能的拖累!

  为了更好地说明结果,我们仍然通过PCMark 7进行了一次基准测试。与先前测试略有不同的是,此次主要是对分页文件的大小进行了调整,根据测试机内存划分为“系统托管(实测为4GB)”、 “512MB”、“2GB”、“4GB”几档,当然也没忘增加了一个大容量“12GB”。

大内存时代 虚拟内存还有用吗?

  图7 不同分页文件大小对于系统性能的影响

  最终结果一目了然,随着分页文件的增长,系统评分开始成比例提高,到达4GB时几乎出现了此次评测最好的成绩。但当笔者人为将其升至12GB时,整体评分又有了明显下降,从而最终佐证了我们先前的推测。

  虽然上述测试已经大体推算出一个分页大小,但我们并不建议所有用户都采用这一设置。原因就是每个人的硬件配置各有不同,大锅饭式设置并不一定适合每一个 人。考虑到分页文件大小可能对性能的影响,我们建议在用户内存不超4GB的情况下,可以选择由Windows自行托管,而当用户内存高于4GB,则应使用 手工设置的方法,将分页文件限定在一个范围之内(建议不超6GB),这样既可保证系统正常的吞吐需求,也不至于因分页文件过大而拖累系统速度!

  此外对于动手能力较强的网友,也可自行通过“性能监视器”(perfmon.msc)添加一个“Paging File Usage”来统计自己电脑中分页文件的实际利用率,借此精确计算出自己的电脑究竟适合多大的分页文件。只不过考虑到该步骤操作较为繁琐,这里就不单独介 绍了。

  写在最后

  事实上就像Windows中的很多组件一样,虚拟内存并不像大家 想象得那样简单,除了众所周知的补充内存功能外(实际上现在这个用途已经很少会用到了),它还承担着提高物理内存命中率及稳定性的作用。甚至某些时 候,Windows的一些核心功能也会用上虚拟内存(如SuperPrefetch、内存转储等)。

  此外个别第三方软件(如 Photoshop、3Dmax等)也是虚拟内存的忠实拥护者,强行关闭很可能导致运行出错或崩溃。当然考虑到硬盘开销及整体运行效能,用户最好根据自身 条件对分页文件大小进行限定,尽量不要让分页文件过于庞大。总之在这个问题上,并没有什么一定之规,更多的是需要使用者灵活处理。

大内存时代 虚拟内存还有用吗?

  图8 这个提示真的不是忽悠你的

  附:几个小问题的解答:

  1. 分页文件移至别的分区是否可提高性能?

  根据微软的设计,操作系统允许同时建立多个分页文件,而且Windows会很智能地从中挑选出性能最高的进行读取。但要注意的是这个设计只针对于多块硬 盘,比如你的Windows装在硬盘1,而分页文件设在硬盘2,那么由于操作系统可以同时从两块硬盘上读取数据(一块读取操作系统,一块读取分页文件), 最终结果就是Windows的效率大增。但如果用户只有一块硬盘,将分页文件由C盘转移至其他分区,理论上并不会有明显改进,除非是你的C盘空间过于紧 张!

  2. 设固定大小可否减少硬盘碎片?

  有人认为Windows默认的可变大 小,常常是导致分页文件出现碎片的主要原因,这个问题我们需要从另一个角度考虑。正如大家已知的,分页文件的一个重要特性是作为内存补充使用(虽然这种情 况目前已经很少,但不排除完全没有),因此当你偶然遇到一个极耗内存程序时,还是有可能将虚拟内存耗尽并导致最终崩溃。那么此时如果使用的是默认可变内 存,相当于给了Windows一次腾挪辗转的机会,也许崩溃就不会发生。

  当然这里要特别说一句的是,如果你的虚拟内存大小合理,一般情况下是不会导致Windows随意调整分页文件大小的,而这样的话产生磁盘碎片的机率也就不是很多了。

小编提示:
  还在用繁琐的重装工具而烦恼吗。为了更加方便用户重装系统,windows7之家现推出windows系统之家重装大师,windows之家系统重装大师内集成了windows之家更新的各类最新 windows系统,包括XP/Win7/Win8/Win10等系统。让您在也不用为不会装机而烦恼了,强烈推荐大家使用!


http://chatgpt.dhexx.cn/article/fbD4IBMg.shtml

相关文章

笔记本电脑查看几个卡槽,支持最大内存,内存条参数详细步骤,开启双通道条件

1:一个命令,轻松查看电脑支持多大内存 使用 Win R组合快捷键,打开 运行 操作框,然后在打开后面 输入命令 cmd ,并点击下方的“确定”进入命令操作窗口,如下图所示。 然后在打开的CMD命令窗口输入命令&am…

在Jupyter里按需删除大内存变量并且释放内存

使用情形: 项目需要对多个大内存变量进行处理,但是每个大内存变量处理的时候都需要加载一个另外共同的大内存变量。现在处理完一个变量之后,只能重启kernel然后处理另一个变量;但是理论上我们可以删除一个变量的内存并读入下一个…

xp计算机如何查看内存大小,xp如何查看内存大小

想知道怎么查看电脑内存的大小吗,下面是学习啦小编带来的关于xp如何查看内存大小的内容,欢迎阅读! xp查看内存大小方法一: 一: 右键单击 我的电脑,选择 【属性】 查看 二: 打开控制面板,打开【系…

Android Studio如何设置占用的最大内存?

1.File-Settings,如下图,是应用到所有项目中的。 2.下方的“Daemon Heap Size Setting”是设置当前项目编译时所能使用的最大内存的,所以如果我们需要仅当前项目有效,可以在这里设置,设置好之后点击“确定”,完成更改。

不花里胡哨看电脑主板支持最大内存与频率

怎么看电脑主板支持最大内存 WinR输入Cmd回车 wmic memphysical get maxcapacity如上图 Maxcapacity:最大内存 k/1024M/1021G 33554432/1024/102132GB说明最高支持32GB的内存 怎么看电脑主板内存条卡槽 CtrlShiftEsc 可以看到卡槽、速度频率 怎么看电脑主板支…

确定你的台式计算机支持的内存类型,怎么查看电脑主板支持多大内存?教你看主板支持多大内存2种方法...

在我们使用电脑时,都希望电脑有这极强的性能,在想要电脑有极强的情况下,电脑的硬件其重要性毋庸置疑。很多喜欢DIY的小伙伴都会选择性能强但是极具性价比的硬件组装。不过不少用户在选择内存条的时候都是往大了选,通常情况下&…

确定你的台式计算机支持的内存类型,怎么看主板支持多大内存 教你看主板支持多大内存2种方法...

怎么看主板支持多大内存?由于不同的主板最大支持的内存大小不同,一些老主板最大支持4G/8GB内存,一些新主板可以支持16GB或者更高。对于DIY装机或者打算为电脑升级内存的时,就需要先了解主板最大支持多大的内存,这样才能…

win10设置虚拟内存_大内存时代,电脑系统还需要设置虚拟内存吗?

大家都知道,内存是组成电脑的重要硬件之一,甚至内存的大小决定了电脑系统运行的快慢,那么在电脑硬件高速发展的今天,电脑系统是否只需要物理内存就可以了呢?要搞清楚这个问题,我们需要先来认识一下物理内存和虚拟内存。 什么是物理内存,什么是虚拟内存? 虚拟内存是相对…

python设置程序最大内存_限制你的Python程序所能使用的最大内存

如果程序开发不当,可能会出现占用过多内存的情况。特别是在Docker里面,如果Python程序占用太多内存,可能会导致Docker容器死掉。 为了限制Python程序所能使用的最大内存,我们可以使用Python自带的resource模块。 首先获取系统默认…

64位 计算机 最大内存,win10 64位最大支持内存是多少_win10系统最高支持多大内存...

许多用户认为,win10电脑应该内存越大那么运行速度也就会越快,因此常常会给自己的win10 64位系统增加内存条,可是有些用户可能不知道,win10系统所能承受的内存空间也是有限制的,那么win10 64位最大支持内存是多少呢&…

计算机支持最大内存大小,64位电脑系统可以支持多大内存【详细介绍】

电脑最大支持多大内存条? 很多小白朋友对这方面的知识并不了解,导致走了很多弯路,其实电脑支持的内存位数取决于处理器、系统位数、主板等,不懂不要紧,今天小编给大家分享下详细的电脑最大支持多大内存条的相关知识点哦。 64位电脑系统可以支持多大内存? 就现在而言,主要…

引导最大内存_实际内存不够大,可用内存更加小,这样解决

内存在电脑上是非常重要的一个部件,电脑种所运行的程序都是在内存里面进行的,因此内存的大小也决定可同时运行的程序的多少,当电脑内存不足时就会影响电脑的性能。 有时电脑安装的内存明明很大,但实际可用的内存却很小,这是怎么回事呢? 右键计算机(或者此电脑)图标,打开…

linux内存--大内存页(大页)

linux 的内存管理是以页为单位进行管理的,标准的页大小是4kb,也就是4096字节。而linux允许配置定义更大大小的页。例如2M,1G,这就是大内存页。 1、大内存页(WHAT) 大内存页就是页的大小更大,例如…

JDK编译

重温下Jdk源码。。先来看下如何编译JDK,我用的环节是centos 其实很简单 大同小异。。 在openjdk官网:http://hg.openjdk.java.net/jdk8u下载的openjdk8u60版本 cd到下载的目录然后执行 bash ./configure --with-target-bits64 --with-boot-jdk机器上的…

java-如何反编译

Java内置的反编译工具 进入需要反编译的class文件夹输入cmd,打开命令行输入javap -p 类名称.class JAD反编译工具 进入需要反编译的class文件夹把jad.exe放在class文件的同级目录下输入cmd,打开命令行输入jad -sjava 类名称.class同级目录下会生成一个反编译的java文件

JAVA编译器eclipse的安装教程

一.JAVA虚拟机安装 链接:https://pan.baidu.com/s/1jsEUDpWnbelujF9bs6ggwQ 提取码:f6s3 二.eclipse下载安装 eclipse官网下载地址: 点我点我点击“Download Packages" 将会出现以下几个packages 3.大家需要选择适合自己系统的编译器…

Java 编译执行

五,编译执行 1,程序结构 一个.java程序文件中必须有且只有一个public类,该类必须有一个声明为main函数作为程序入口。 并且这个main函数需要声明为 public static void 类型,即静态的,公开的,返回值为空的函数类型。 并且这个java程序的文件名必须和这个public类名保持一…

Java反编译工具

1、编译和反编译 (1)编译:将源文件(.java)转换成字节码文件(.class)的过程称为编译。 (2)反编译:将字节码文件(.class)转换回源文件(.java)的过程称为反编译。 2、反编译工具jad和FrontEnd Plus &#…

Java的编译原理

目录 概述Java中的前端编译 解析与填充符号表插入式注解处理器语义分析与字节码生成Java中的后端编译 编译器与解释器编译对象与触发条件编译过程Java的后端编译优化技术 公共子表达式消除数组边界检查消除方法内联逃逸分析参考资料 概述 java语言的"编译期"分为前…

Java反编译

反编译的过程与编译刚好相反,就是将已编译好的编程语言还原到未编译的状态,也就是找出程序语言的源代码。就是将机器看得懂的语言转换成程序员可以看得懂的语言。Java语言中的反编译一般指将class文件转换成java文件。 Java常用反编译工具 本文主要介绍…