.net应用程序抛出outofmemory异常

时间:2015-08-04 23:41:39

标签: c# asp.net windows out-of-memory clr

我有两个Windows Server 2003有8GB和16GB RAM。

在服务器上运行测试程序时,当测试程序的堆大小达到738Mb时,所有这些程序都会抛出OutOfMemory异常。

我搜索到Windows服务器只使用60%的2Gb用户内存地址,它可能是1.2Gb。

所以,
1.哪台机器目标决定最大内存? 2.为什么8Gb和16Gb服务器表现出相同的性能? 3.有些文档说1.2Gb(约)依赖于私有字节或工作集或虚拟字节或堆大小?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解您的所有问题,但我建议您阅读this article。一些关键点:

  

为进程保留的数据存储量仅受操作系统可以在磁盘上获取的空间量的限制。 (*)

     

“内存不足”错误几乎从未发生过,因为没有足够的可用存储空间;正如我们所见,存储是磁盘空间,而磁盘现在是巨大的。相反,发生“内存不足”错误是因为进程无法在其虚拟地址空间中找到足够大的连续未使用页面部分来执行请求的映射。

     

应该清楚为什么“内存不足”错误通常与您拥有多少物理内存,甚至多少存储空间无关。它几乎总是关于地址空间,它在32位Windows上相对较小且容易碎片化。