【发布时间】:2015-07-01 19:51:22
【问题描述】:
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.5 GB 的虚拟地址空间吗?
我使用的是 Visual Studio 2012,但我认为这个问题跨越不同的 VS 版本,因为 Visual Studio 2015 仍然没有 64 位版本。
(请注意,VMMap 将“空闲”报告为地址空间中的剩余内存,32 位进程最多 4GB,Windows 上 64 位进程最多 8TB。)
我已经尝试过的事情:
- 以安全模式启动
- 删除所有插件和扩展,以便在“工具”>“加载项管理器”和“工具”>“扩展”中不显示任何内容(https://github.com/tsasioglu/Total-Uninstaller 对此很有帮助)
- 删除我的 .suo/.sdf 文件
- 删除我的 AppData/*/Microsoft/VisualStudio 文件夹
- 使用漏斗并过滤掉除 3 个项目之外的所有项目
- 删除了我所有的“符号文件 (.pdb) 位置”选择并选择了“自动加载符号:”“仅指定的模块”
- 选择“仅启用我的代码”进行调试
- 禁用 Intellisense(工具 -> 选项 -> 文本编辑器 -> C/C++ -> 高级 -> 禁用 IntelliSense)
【问题讨论】:
-
您正在运行哪些附加组件、扩展或插件。在卸载所有插件之前,我曾经遇到过同样的问题。现在它很少引起麻烦了。
-
你真的需要加载所有167个项目吗?如果没有,请尝试“漏斗”扩展:visualstudiogallery.msdn.microsoft.com/…
-
VS 当然可以使用很多虚拟机,尤其是在您的大量项目中。尝试删除所有扩展。另外,请确保您的机器有 8GB 的 RAM,因此 VS 不会与操作系统争夺 RAM。 SSD 可能有助于重启。您的屏幕截图显示您使用的是 Win7,还好不是 XP。您应该改用 perfmon 和 windows 的性能计数器。
-
@ChrisO 我已经删除了所有扩展,我有 32 GB 的 RAM 和 SSD。 perfmon 和性能计数器会提供哪些 VMMap 没有提供的相关信息?
-
@JDiMatteo,抱歉刚刚注意到您的问题。 VMMap 中显示的 Committed 数量是 32 位进程最重要的计数器。所以我的错误,VMMap 已经显示了相关信息(出于某种原因正在考虑任务管理器)。正如您已经确定的那样,当您接近 3.8GB 总承诺时,应用程序就会变得不稳定。另一种选择是将 VS 的空实例附加到正在运行的应用程序以进行调试。这样就不会加载“大型”解决方案,您仍然可以获得完整的调试体验。
标签: c++ visual-studio virtual-memory