首页 > 解决方案 > 将“任何 CPU/首选 32 位”设置为 VS 中的默认构建设置背后的基本原理

问题描述

假设在 x64 Windows 机器上使用最新版本的 Visual Studio 和 C# 并分配大量数据。

果然,当使用默认构建设置进行编译时(下图为 VS 2019 Preview 2.1),当您的进程达到 4 GB 时,您将用完用户虚拟地址空间。这是意料之中的,原因在讨论。

在此处输入图像描述

例如,分配本身可以通过创建几百个简单数组来完成,每个数组包含几百万个int元素。

我想了解的是为什么Any CPU/Prefer 32-bit选择它作为默认构建选项。我还注意到 VS 2015 也具有相同的默认设置,并且很可能是自 VS 11 以来出现的每个版本,如此所述。

通常问的问题是“什么是 AnyCPU...?” 并且已经多次回答(1 2 3 4 5),简要介绍了定位x86/ x64/的优势Any CPU + Prefer 32-bit。但是我还没有找到一个明确的答案来解释为什么Any CPU + Prefer 32-bit在 VS 中被选为默认设置。

通过默认情况下反对为 x64 构建的原因:

最后,默认Any CPU/Prefer 32-bit设置很可能是一种权衡,并且以某种方式牺牲了大(> 4 GB)内存访问以换取其他被认为更重要的东西。

虽然 Win10 上 x64 进程用户模式虚拟地址空间的限制是 128 TB,但 4 GB 的物理 RAM 是当今入门级笔记本电脑的标准配置,因此可能会失去所有额外 RAM 的优势(最大物理内存限制Windows 版本在这里)。

标签: c#.netvisual-studiomemory

解决方案


推荐阅读