【问题标题】:.net application throw outofmemory exception.net 应用程序抛出内存不足异常
【发布时间】:2015-10-27 13:24:02
【问题描述】:

我有两个 windows server 2003 有 8GB 和 16GB RAM。

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

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

所以,
1. 哪个机器目标决定最大内存?
2. 为什么 8Gb 和 16Gb 服务器性能一样?
3. 一些文件说 1.2Gb(about) 取决于 Private Bytes 或 Working Set 或 Virtual Bytes 或堆大小?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多