【发布时间】:2013-12-09 22:14:27
【问题描述】:
我有一个使用 PAE 在 Windows 2003 x86 上运行的应用程序。操作系统有 8 GB RAM。 在应用程序运行期间分配了一些内存,并且在主机进程增长到 ~1GB 并且总系统内存增长到超过 4GB 之后,我遇到了 OOM 异常。
当时大约有 4GB 的可用 RAM,单个进程大约有 1GB 到 2GB 的限制。
所以问题是:如果我有足够的空闲内存,这个异常的根源在哪里?
【问题讨论】:
-
数组必须是程序地址空间中的单个连续内存块,您的程序可能只消耗总共 1GB 的内存,但分布在 3GB 的地址空间中。见:stackoverflow.com/a/14835279/288747
-
你运行 32 位还是 64 位?
-
AFAIK,PAE 将可用内存扩展到 3GB,而不是 2GB。它不会消除所有限制。
-
PAE 是古老的银行转换技巧。它与垃圾收集器完全不兼容,因此 .NET 不支持它。通过将计算机更新到 64 位版本的 Windows,充分利用您拥有的所有内存。
标签: c# .net out-of-memory