boot.ini中32位Windows的“/ 3Gb”开关有什么缺点吗?

微软build议在Boot.ini中使用/ 3Gb切换,以获得运行在32位系统上的进程的更多内存

目前,我需要大量devenv进程(Visual Studio 2008)的内存,因为我有一个复杂的解决scheme,它有很多的项目和表单,并在devise时耗费大量的资源。

我想问问,如果有人知道,使用3Gb交换机的负面影响是什么,有没有什么情况下不推荐使用它。

在台式机上,可能没有问题。 在设置了/ 3GB开关的W2K3 / WXP机器上,内核页面缓冲池较小。 这对台式机来说可能不是问题,因为你不应该用尽内核页面缓冲池。 在服务器上,耗尽内核分页池会导致你的问题,并且很可能会耗尽你的内存。

下面是关于与/ 3GB交换机相关的内核内存的一些细节。 如果你真的想要的话,你可以启动NT内核debugging程序,并在更改之前和之后修改系统configuration文件: http : //blogs.technet.com/markrussinovich/archive/2009/03/26 /3211216.aspx

内核可用的内存会更less – 交换机将内核模式地址空间/用户模式地址空间拆分(先前的2GB到2GB)调整为1GB到3GB。 仔细阅读Raymond Chen的post / 3GB以及后续内容,然后再继续。

在进行任何更改之前,应首先检查要运行的进程是否与LARGEADDRESSAWARE标志链接。 有了这个标志,过程如何使用记忆将不会有任何改变。

你可以使用这个SDK工具:

dumpbin /头文件exeName

吐出来的头文件应该包括:

应用程序可以处理大(> 2GB)的地址

我做了devenv.exe的检查,在VS2008中它包含了标志。

有很多缺点。 默认情况下,Windows会为每个进程分配一个4GB的内存池,内核模式进程(所有应用程序通用)和用户模式进程(每个应用程序独有)(简化说明)之间分配50/50。 因此,在系统上运行的应用程序有2GB的内存可用,而系统本身拥有2GB的内存。 重要提示:第​​二个2GB对系统上运行的所有应用程序都是相同的2GB。

/ 3GB开关调整分割,以便内核模式获得1GB,用户模式获得3GB。

现在考虑你正在运行的应用程序。 其中一些将需要更多的内核模式空间,有些则需要更多的用户模式空间。 由于内核模式池是共享的,如果你运行的应用程序将内核模式内存置于压力之下,那么你可能会很快耗尽内存。 另一方面,如果你的应用程序使用大量的用户模式内存,执行/ 3GB会给他们所需的空间。

所以这真的是你要运行的应用程序的性质。 黄金法则是咨询应用程序供应商并阅读文档; 特别是如果应用程序供应商没有任何build议,你应该开始变得可疑…他们有没有正确地testing他们的应用程序? 这是每个供应商应该知道的基本东西。

这里有一个很好的讨论: http : //blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

在你的情况下,我认为切换到64位,并获得更多的内存将是一个更可行的解决scheme,因为/ 3GB不会真的得到你想要的(它甚至可以在XP上工作吗?)

我们已经在一些运行image processing应用程序的系统上使用了很多大图像,并且从来没有发现任何问题。 在任何需要额外的应用程序内存的情况下,您可能会让应用程序运行,而不是对系统做任何其他的事情,所以可能不会有太大的影响。

我看到它以奇怪的方式干扰video卡。 但是,如果驱动程序写得不正确,任何驱动程序都可能会对此开关造成不良影响。

有时这些问题可以通过添加/ USERVA开关来解决。

http://support.microsoft.com/kb/319043
http://support.microsoft.com/kb/833721
http://support.microsoft.com/kb/839490
http://support.microsoft.com/kb/316739

它只能在LARGEADDRESSAWARE二进制文件的企业服务器操作系统上可靠地工作(除了debugging驱动程序等)。

devenv不是这样的二进制 。 SQL Server和Exchange是,例如。

您需要x64位操作系统 VS x64编辑: 在x64上检测到LARGEADDRESSAWARE以打破2GB限制。