虚拟内存在当今廉价RAM的世界中仍然相关吗?

时间:2009-02-05 07:04:00

标签: performance memory-management operating-system

引入虚拟内存以帮助运行内存有限的更多程序。但在当今廉价RAM的环境下,它仍然具有相关性吗?

如果禁用磁盘访问并且所有程序都驻留在内存中,则不会有磁盘访问,是否会改善性能和程序响应时间?

除了如上所述运行更多程序外,Windows中的虚拟内存是否有任何基本要求?我们不知道的内部窗户。

11 个答案:

答案 0 :(得分:16)

一些迂腐:虚拟内存不仅仅是页面文件。该术语包含一系列技术,使程序产生错觉,即它有一个连续的地址空间,其中一些是程序的代码,其中一些是数据,其中一些是DLL或内存映射文件。 / p>

所以对你的引导问题:是的,需要虚拟内存。这就是现代操作系统的工作原理。

答案 1 :(得分:12)

不要禁用虚拟内存。 2GB甚至不足以考虑这一点。无论如何,即使已经足够总是保持虚拟内存,因为它只会在你真正需要时使用它。更好的安全而不是遗憾,因为没有它活动意味着你只是碰壁,而让它活动意味着你的计算机开始交换到硬盘驱动器,但继续运行。

答案 2 :(得分:6)

是的,因为它是现代操作系统中所有按需分页的基础,而不仅仅是Windows。

Windows将始终使用您的所有内存,如果不是用于应用程序,则用于缓存从硬盘驱动器读取的任何内容。因为如果不使用那个内存,那么你就会把你的投资浪费在内存上。基本上,Windows使用您的RAM作为硬盘驱动器的大容量缓存。这种情况一直发生,因为当您处理该页面的内容时,相关页面只会被带入主内存。

答案 3 :(得分:5)

问题是,考虑到现代计算机具有多少内存以及操作系统内部正在发生的事情,页面文件的用途是什么。

Windows任务管理器通常显示没有使用多少物理内存,但是,您有很多页面错误? Win32永远不会分配它的所有物理内存。它总是节省一些新的资源需求。使用大页面文件与小页面文件,Win32将更慢地为进程分配物理内存。

几天后,我一直在Vista中使用一个非常小的页面文件(200 MB固定),具有3GB的可寻址物理内存。我没有崩溃或问题。没有尝试像大型视频编辑或许多不同的进程一次打开。我不建议不使用页面文件,因为操作系统永远不会在物理内存中乱翻页面,从而导致漏洞的发展。对于那些在弹出低内存警告或操作系统崩溃时不知道如何手动增加页面文件的人来说,大型页面文件是安全的。

有些观点: 内核将使用一些物理内存,这将通过VM映射与所有其他进程共享。其他进程将在剩余的物理内存中。 VM使每个进程看到4GB内存空间,操作系统低于2GB。每个进程需要比4GB的物理内存少得多,这个数量是它提交的内存要求。编程时,malloc或new将保留内存但不提交内存。像第一次写入内存的事情将提交它。操作系统会立即为每个进程提供一些内存。

答案 4 :(得分:4)

你的问题实际上是关于使用页面文件,而不是虚拟内存,正如kdgregory所说。虚拟内存最重要的用途可能是操作系统可以保护进程内存与另一个进程内存,同时仍然为每个进程提供连续,平坦的虚拟地址空间的错觉。实际的物理地址可以并且将变得支离破碎,但虚拟地址将显得连续。

是的,虚拟内存至关重要。页面文件,可能不是。

答案 5 :(得分:2)

哎呀。磁盘空间可能总是比RAM便宜。我的一台实验室计算机有512MB的RAM。当我得到它时,它已经足够了,但现在它已经放慢了爬行速度,我需要在其中加入更多的RAM。我现在没有比以前运行更多的软件程序,但它们都变得更加臃肿,而且它们经常产生更多的“守护程序”程序,只是在那里做什么,只是等待一些事件并耗尽内存。我查看我的进程列表,文件资源管理器的“内存中”列是40MB。对于Firefox,它是162MB。 Java的“更新调度程序”jusched.exe使用另外3.6MB。这就是物理内存,这些数字不包括交换空间。

因此,为无法换掉的内容保存更快,更昂贵的内存非常重要。我的硬盘驱动器可以节省数十GB的交换空间。

内存被认为足够便宜,操作系统和许多程序不再尝试优化。一方面它很棒,因为它使程序更易于维护和调试,并且可以更快地开发。但我讨厌不得不继续在我的计算机中安装更多内存。

答案 6 :(得分:1)

一个很好的解释 http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

  

以最佳方式调整页面文件的大小   应该启动你的所有应用程序   同时运行,加载典型   数据集,然后记下提交   充电峰值(或看这个值   经过一段时间你知道   达到最大载荷)。设置   分页文件最小为该值   减去系统中的RAM量   (如果值为负,请选择一个   最小尺寸允许那种   您配置的崩溃转储)。如果   你想要一些喘息的空间   对于潜在的大型提交要求,   将最大值设置为该数字的两倍。

答案 7 :(得分:1)

虚拟内存不仅仅是RAM的扩展。实际上,虚拟内存是他们虚拟化对物理内存的访问的系统。应用程序具有一致的环境,完全独立于RAM大小。这提供了许多重要的优点,从增加的内存可用性中可以看出。虚拟内存是操作系统不可或缺的一部分,无法禁用。

页面文件不是虚拟内存。许多消息来源声称这一点,包括一些微软文章。但这是错误的。您可以禁用页面文件(不推荐),但这不会禁用虚拟内存。

Virtual mmeory已经在大型系统中使用了大约40年,现在它不会消失。优点太大了。如果消除了虚拟内存,则所有当前的32位应用程序(以及64位应用程序)都将过时。

拉里米勒 Microsoft MCSA

答案 8 :(得分:1)

虚拟内存是一种安全网,适用于没有足够RAM可用于所有正在运行的应用程序的情况。这种情况在前一段时间非常普遍,今天当你可以拥有大量的系统RAM时,它就不那么容易了。

有人说要单独保留页面文件并让它由Windows管理。有人说,即使你有大RAM,保持大页面文件也不会受到伤害,因为它不会被使用。事实并非如此,因为Windows会进行先发制人的分页以准备内存需求的高峰。如果这种需求永远不会到来,这只是浪费的硬盘活动,我们都知道硬盘驱动器是任何系统中最慢的组件。具有足够大的RAM的抢先分页是没有意义的,它唯一能做的就是减慢同时发生的任何其他磁盘活动。更不用说额外的磁盘磨损了。加上大页面文件意味着千兆字节的锁定磁盘空间。

许多人指出马克·鲁西诺维奇article支持他们坚信不应该在任何情况下都禁用页面文件,而且很多聪明的人都认为它非常彻底,以至于我们,小开发者,永远不要质疑页面文件大小的默认Windows策略。但即便是Russinovich自己写道:

  

将页面文件最小值设置为该值(峰值提交费用)减去系统中的RAM量(如果值为负值,请选择最小大小以允许您配置的崩溃转储类型)。

因此,如果你有大量的RAM,并且即使你一次打开所有应用程序,你的窥视提交费用也不会超过你的RAM的50%,根本不需要页面文件。所以在这些情况下99.99%的时间你永远不会需要比RAM更多的内存。

现在我并不是主张禁用页面文件,但是将它放在RAM或更大的范围内只是浪费空间和不必要的活动,这会减慢其他内容。当系统确实需要更多内存并防止内存不足时,页面文件为那些罕见(有足够RAM)的情况提供安全网,这很可能会使您的系统不稳定且无法使用。

页面文件的唯一真正需求是内核转储。如果需要完整的内核转储,则至少需要400 MB的分页文件。但如果您对迷你转储感到满意,最低为16 MB。

这两个世界都是最好的
  • 几乎没有页面文件
  • 虚拟内存安全网

我建议将Windows配置为迷你内核转储,将最小页面文件大小设置为16 MB,最大值设置为您想要的任何值。这种方式页面文件实际上是未使用的,但会在首次出现内存错误后自动扩展,以防止系统无法使用。如果您碰巧至少有一个内存不足问题,您当然应该重新考虑最小尺寸。如果你真的想要安全,请将页面文件分钟。大小1 GB。对于服务器,你应该更加小心。

答案 9 :(得分:0)

不幸的是,它仍然需要,因为Windows操作系统倾向于“过度缓存”。

另外,如上所述,2GB并不足以考虑将其关闭。哎呀,我可能不会把它关掉,直到我有8GB或更多。

G-曼

答案 10 :(得分:0)

  

如果禁用磁盘访问并且所有程序都驻留在内存中,则不会有磁盘访问,是否会改善性能和程序响应时间?

我不完全确定其他平台,但我有一台Linux机器,其中交换空间被意外禁用。当一个进程使用了​​所有可用内存时,该机器基本冻结了5分钟,负载平均值变为荒谬数字,内核OOM killer启动并终止了几个进程。重新启用交换完全解决了这个问题。

我从未经历任何不必要的交换光盘 - 它只发生在我使用所有可用内存时。现代操作系统(甚至是5到10年前的Linux发行版)非常智能地处理交换空间,并且只在需要时使用它。

你可以在没有交换空间的情况下使用,因为使用单个进程达到4GB的内存使用率是非常罕见的。使用64位操作系统并说8GB内存它更为罕见......但是,实际上没有任何意义可以禁用交换空间,你没有获得太多(如果有的话),并且当你没有物理内存时,糟糕的事情发生..

基本上 - 任何半体面的操作系统应该只在需要时使用光盘交换(或虚拟内存)。禁用交换只会停止可以回退的操作系统,这会导致OOM杀手攻击(因此当进程终止时数据会丢失)。