【发布时间】:2012-08-07 03:52:12
【问题描述】:
Memory Limits for Windows Releases 回答 Windows 上任何单个进程可以处理的最大内存量是多少:
在 32 位版本的 Windows 上,单个进程可以映射和寻址 超过 3GB 的虚拟内存。在 64 位版本的 Windows,一个 32 位进程可以映射和寻址不超过 4GB 的 一次虚拟内存。
对于 64 位进程,数量很难计算,因为 有许多重叠的限制,可能适用于所有 种因素。它通常在 7TB 左右。
我的问题:如何验证“3GB”、“4GB”等值?
可以编写一个 C# 程序来证明它吗?有办法吗?
【问题讨论】:
-
天真的方法(也读作:足够好的方法):开始分配内存,直到遇到 OutOfMemory 异常。
-
3 GB 限制仅适用于为其配置的系统,仅适用于为其配置的进程,它会损害内核性能。您通常只能获得 2 GB。
-
GetSystemInfo 将为您提供 lpMinimumApplicationAddress 和 lpMaximumApplicationAddress 中的可用地址空间。当然,您可能没有足够的 RAM 来填充该地址空间,但这就是您可能拥有的数量。