如何让 Visual Studio 保持在 4GB 虚拟地址范围内 Space

How to Get Visual Studio To Stay Within 4GB Virtual Address Space

Visual Studio devenv.exe 进程是 32 位 (even when run on a 64-bit OS),因此它不能使用超过 4GB 的虚拟内存。

不幸的是,当我使用 Visual Studio 调试我的 C++ 应用程序时,由于这个 4GB 的限制,我经常 运行 内存不足。例如,使用 VMMap,下面显示了我在几个小时内导致崩溃的典型 Visual Studio 使用进度。

我怎样才能 Visual Studio 使用更少的内存,这样我就不会再浪费时间让它崩溃了?

Visual Studio使用超过3.5GB的虚拟地址space是典型的吗?

我正在使用 Visual Studio 2012,但我假设这个问题跨越不同的 VS 版本,因为 Visual Studio 2015 仍然没有 64 位版本。

(请注意,VMMap 将“空闲”报告为地址 space 中的剩余内存,对于 32 位进程最多 4GB,对于 Windows 上的 64 位进程最多 8TB。)


我已经尝试过的事情:

有可能可靠地让 Visual Studio 保持在 4GB 的虚拟内存内,但您可能必须在使用 devenv.exe 测量内存使用时尝试使用以下一种或多种策略 VMMap:

  1. 从工具 > 加载项管理器和工具 > 扩展中删除插件和扩展(https://github.com/tsasioglu/Total-Uninstaller might be helpful) and/or run in Safe Mode
  2. 定期(例如每月)删除您的 .sdf 和 .suo 文件(当 Visual Studio 关闭时)以便重新创建它们(而不是删除,考虑重命名以防您决定要它们回来,因为您可能会丢失一些配置设置)
  3. 如果您正在加载大量符号(您可以在 VS 输出 window 中计算 "Symbols loaded"),您可以 disable this 使用工具 > 选项 > 调试 > 符号:"Only specified modules",然后单击 "Specify modules" 并取消选中 "Always load symbols located next to modules"。您可以在使用 Debug > Windows > Modules.
  4. 进行调试时加载其他符号
  5. 使用 Funnel or Solution Folders
  6. 从大型解决方案卸载项目
  7. 如果所有其他方法都失败了,运行 两个不同的 Visual Studio 实例:第一个加载了大型解决方案但不用于调试(例如调试 > 不调试就开始),第二个有没有加载解决方案,但附加到 运行ning 进程以进行调试。 (感谢 ChrisO 的建议。)
  8. 如果您真的无法让 Visual Studio 工作,请尝试 WinDbg,它是 Microsoft 开发人员使用的 64 位(与 Visual Studio 不同)。

我观察到禁用大多数符号加载 将 devenv 内存使用量减少 1.7 GB 并删除我的 .suo 和 .sdf 文件将内存使用量额外减少 600 MB。这种内存使用量的减少使得 Visual Studio 从一天崩溃多次变为 运行 稳定使用同一实例 运行 稳定多天,有时数周。

除了减少内存使用外,这些策略可能 显着加快 Visual Studio