我还需要使用虚拟内存吗?


14

我原本以为这已经被问到了,但我似乎无法找到它。

在什么时候我不再需要启用虚拟内存?有了4GB的RAM,我发现计算机很少使用它附近的任何地方。此时虚拟内存并非绝对必要。关掉它有危险吗?如果我这样做,我会失去什么功能吗?


1
注意: 只有有限的内存给驱动程序,称为 non-pagedpaged 记忆部分。当页面部分变满时,页面文件是必要的,作为游戏玩家,我看到游戏抱怨页面池内存,因为我在8 GB系统上禁用了页面文件。结论: 页面文件是必要的,它们可以防止页面池耗尽 加快速度 你的系统。
Tom Wijsman

Answers:


9

由于内存不再是桌面PC /笔记本电脑上的稀疏资源,我怀疑大多数程序可以优雅地处理内存不足的情况并且会崩溃。
所以: 危险吗?是 ,如果您的4GB以某种方式用完而且您没有页面文件,应用程序可能会开始崩溃。
如Zoran的例子所示,以后可能很难确定问题。

Ram提到的这篇文章也指出,转向交换 通常不会提高速度,反而可能相反

因此,虽然可能有一些工作负载在没有分页文件的情况下表现更好,但通常有一个工作负载意味着系统可用更多可用内存


我将不得不在MS网站上挖掘这篇文章,但MS确实说你应该总是有一个页面文件。即使在高内存系统上,没有一个可以让你的机器运行得更慢。
Keltari

10

看到 Mark Russinovich的文章 关于虚拟内存。这应该会给你一个关于虚拟内存的好指针。

这是链接中有用的摘录

那么您如何知道您的工作负载需要多少提交费用?您可能已经在屏幕截图中注意到Windows跟踪该数字并且Process Explorer显示它:Peak Commit Charge。要优化页面文件的大小,您应该同时启动所有运行的应用程序,加载典型数据集,然后记下提交费用峰值(或者在知道达到最大负载的一段时间后查看此值) 。将页面文件最小值设置为该值减去系统中的RAM量(如果值为负,请选择最小大小以允许您配置的崩溃转储类型)。如果您希望为潜在的大型提交需求留出一些喘息空间,请将最大值设置为该数字的两倍。


Mark Russinovich引用的+1。总是很好读。
mrduclaw

3

这个经典的帖子 在ServerFault上有一些好处。对于只有4GB我只留下页面文件,并且在任何情况下磁盘上涉及的空间都很小。


3

我建议将虚拟内存设置保留为默认值。我有8GB的RAM并且关闭虚拟内存以为我会获得速度(因为没有交换),但事实证明这使得我的系统不太稳定(我在2台机器上做了这个,类似的结果)。我在两台机器上每周大约遇到一次BSOD。我开始检查生成的小型转储器,发现所有的BSOD都是通过调用一个名为KiPageFault的例程触发的。所以我尝试将虚拟内存设置恢复为默认值,常规BSOD消失了。

我花了很长时间来关联2,我没有实际的证据表明我关闭了虚拟内存的事实导致了BSOD,但我把它重新打开后我的机器更加稳定...


谢谢。听到真实的结果而不仅仅是假设是很好的。
Steve Rowe

0

取决于您的工作量。我为Web应用程序设置了一堆无盘前端。他们网络启动并在8GB内存中运行所需的一切。

我也使用了32MB的Windows(98),没有页面文件 - 当然你必须住在那个内存空间并限制你的应用程序以适应资源。

您确实希望确保磁盘缓存有一些额外的RAM,否则性能会变得非常糟糕。

我似乎记得有些程序在没有VM的情况下无法运行,但我不知道它们是什么


-2

嗯,史蒂夫,有趣的是你应该问这个问题。

我会告诉你一个小秘密:你需要虚拟内存的地步从来没有。虚拟内存是由一群对实用计算系统一无所知的学者创建的一个非常无能的想法,如果可以在没有VM的情况下运行,任何计算机都将运行得更好。

现在,您可能会问,如果VM无用且有害,为什么大多数大型现代操作系统都会使用它?对这个问题的简短回答是,决定是否在微软,苹果和IBM使用虚拟机的人甚至比发明虚拟机的学者更愚蠢和缺乏经验,并且想要基于相同的,完全不正确的假设来采用虚拟机。学者们在发明它时就已经有了。我们可以开始谈论这些假设和误解,但不幸的是,如果它们易于理解和描述,我们首先就不会遇到VM问题。

回到你的身边。不幸的是,就像上面提到的苹果和微软的tardnoggins一样,你有自己的误解,即你可以关闭虚拟机的想法。当然,你不能把它关掉,如果你可以把它关掉的话,这会打败搞砸你的全部目的。当人们做一些非常愚蠢的事情时,他们总是确保它是不可逆转的。毕竟,如果每个人都可以关闭VM,那么他们会这样做,这会让创建它的bozos看起来很愚蠢不是吗?他们通过使其无法移动来防止这种可能性,有点像微软让Internet Explorer无法移动。

你可以做的是限制页面文件的大小,当然应该设置为最小值,希望是0.虚拟内存仍然存在,但至少你可以从非常非常慢到非常非常通过要求它不涉及疯狂的磁盘驱动器来缓慢。


虚拟内存可以带来很多好东西。如果您没有虚拟内存,则必须有足够的RAM来保存系统上每个进程定义的代码和数据的每个字节,无论它是否实际被引用。由于大多数程序花费90%的时间使用10%的代码和数据,这将是一个巨大的浪费。你也会失去许多其他有用的东西,这里的评论格式没有给我提供空间。我们没有放弃虚拟内存的原因是它仍然是一个非常非常好的主意。甚至在“实用计算系统”中。
Jamie Hanrahan

@RickBrant你听起来像英特尔和IBM的白痴电气工程师我曾经在20世纪80年代听过,试图解释为什么VM是个好主意。我记得当IBM推出OS / 2时,这是第一个受VM损坏的操作系统,不得不听他们解释为什么这是一个好主意。好吧,感谢上帝OS / 2死了,但不幸的是VM继续前进,就像一个僵尸,所以这里是2017年,我仍在听这个废话。我会打赌美元给你没有CS学位的甜甜圈,做您?这是笑话部分。 99%的推广VM的人不是程序员
Tyler Durden

事实上,我是西海岸最好的科技学院之一的CS / EE。今天我主要是程序员,但我确实与硬件类型进行交互。现在,你是否有一个令人信服的反驳意见,即必须保持程序在RAM中始终定义的代码和数据的每个最后字节,无论是否需要它都是非常浪费的?因为虚拟内存避免了这种情况。或者你是否会继续进行“你必须是白痴”的人身攻击?
Jamie Hanrahan

哦,重新 “OS / 2,这是第一个被VM损坏的操作系统,” 嗯,不,不是大约二十年。也许是第一个广泛使用的PC操作系统。 (但不是第一个“个人电脑”。)
Jamie Hanrahan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.