Microsoft 建议在 Boot.ini 中使用 /3Gb 开关,以便为在 32 位系统上运行的进程获取更多内存。
目前我需要大量内存用于devenv进程(Visual Studio 2008),因为我有一个复杂的解决方案,它有很多项目和表单,并且在设计时消耗大量资源。
我想问一下,如果有人知道,使用 /3Gb 开关有哪些负面影响,有没有不建议使用它的情况。
Microsoft 建议在 Boot.ini 中使用 /3Gb 开关,以便为在 32 位系统上运行的进程获取更多内存。
目前我需要大量内存用于devenv进程(Visual Studio 2008),因为我有一个复杂的解决方案,它有很多项目和表单,并且在设计时消耗大量资源。
我想问一下,如果有人知道,使用 /3Gb 开关有哪些负面影响,有没有不建议使用它的情况。
在台式机上,可能没有问题。在带有 /3GB 开关集的 W2K3 / WXP 机器上,内核分页池更小。对于台式机来说,这可能不是问题,因为您不应该接近耗尽内核分页池。在服务器上,耗尽内核分页池会给您带来问题,而且您更有可能耗尽它。
这里有一些关于与 /3GB 开关相关的内核内存注意事项的详细信息。如果您真的想要,您可以启动 NT 内核调试器并在更改前后使用此文档中的信息来分析您的系统:http: //blogs.technet.com/markrussinovich/archive/2009/03/26 /3211216.aspx
您的内核可用内存将减少 - 开关调整内核模式地址空间/用户模式地址空间拆分,以前是 2GB 到 2GB,再到 1GB 到 3GB。在继续之前,请阅读Raymond Chen在 /3GB 上的帖子以及后续内容。
在进行任何更改之前,您应该首先检查您要运行的进程是否与 LARGEADDRESSAWARE 标志链接。使用该标志,进程使用内存的方式不会发生任何变化。
您可以为此使用 SDK 工具:
吐出的标题应包括:
我对 devenv.exe 进行了检查,在 VS2008 中它确实包含了标志。
很多缺点。默认情况下,Windows 会为每个进程分配一个 4GB 的内存池,它在内核模式进程(所有应用程序通用)和用户模式进程(每个应用程序唯一)之间按 50/50 分割(简化解释)。因此,在系统上运行的应用程序有 2GB 的内存可供使用,而系统本身有它自己的 2GB。重要提示:第二个 2GB 与系统上运行的所有应用程序的 2GB 相同。
/3GB 开关调整拆分,使内核模式获得 1GB,用户模式获得 3GB。
现在考虑您正在运行的应用程序。其中一些需要更多的内核模式空间,一些需要更多的用户模式空间。由于内核模式池是共享的,如果您运行的应用程序使内核模式内存处于压力之下,您可能会很快耗尽那里的内存。另一方面,如果您的应用程序使用大量用户模式内存,则实施 /3GB 将为他们提供所需的空间。
因此,这实际上取决于您要运行的应用程序的性质。黄金法则是咨询应用程序供应商并阅读文档;特别是如果应用程序供应商没有任何建议,您应该开始怀疑......他们是否正确测试了他们的应用程序?这是每个供应商都应该知道的基本知识。
这里有一个很好的讨论:http: //blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx
在您的特定情况下,我认为切换到 64 位并获得更多 RAM 将是一个更可行的解决方案,因为 /3GB 并不能真正满足您的需求(它甚至可以在 XP 上运行吗?)
我们已经在几个在大量大图像上运行图像处理应用程序的系统上使用了它,并且从未发现任何问题。在任何需要额外 Gig 应用程序内存的情况下,您可能会让应用程序运行而不对系统执行任何其他操作,因此可能不会产生太大影响。
我已经看到它以奇怪的方式干扰视频卡。但是,如果没有正确编写,任何驱动程序都可能会在此开关上出现异常。
有时这些问题可以通过添加 /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 二进制文件的企业服务器操作系统上可靠地工作(调试驱动程序等除外)。
devenv 不是这样的二进制文件。例如,SQL Server 和 Exchange。您需要 x64 位操作系统
和VS x64编辑:在 x64 上检测到 LARGEADDRESSAWARE以打破 2GB 限制。