2

根据 MSDN,.NET 框架使用 mark&sweep 垃圾收集方法。同一页还说,在 32 位系统上,地址空间为 2GB - 这意味着地址空间从 32 位系统的 4GB 减少了一半。

将可用内存减半是 stop© 垃圾收集方法的一个特点,但 .NET 使用可以对整个地址空间进行操作的 mark&sweep - 那么为什么 .NET 将地址空间减半呢?

4

1 回答 1

4

这是 Windows,而不是 .NET。32 位 Windows 为操作系统保留了前 2GB 的地址空间,并将应用程序限制为 2GB(前提是未使用 /3GB 标志)。

请注意,在实践中,它实际上更糟。32 位 .NET 应用程序通常会开始增加OutOfMemoryException1.2 到 1.6GB 的 RAM 使用量,即使在具有大量物理内存的 64 位系统上也是如此。

于 2013-10-03T23:23:21.360 回答