【问题标题】:System.OutOfMemoryException in use Dictionary<TKey, TValue>System.OutOfMemoryException 在使用 Dictionary<TKey, TValue>
【发布时间】:2016-08-07 23:13:17
【问题描述】:

我收到错误消息:

引发了“System.OutOfMemoryException”类型的异常。

尝试时:

try
{
    var dict = new Dictionary<int, int>();
    for (int i = 0; i <= Int32.MaxValue; i++)
    {
        dict.Add(i, i);
    }
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

我的系统大约在 30 秒内转储。

我的系统:

我的问题:要存储 2147483647 + 1 = 2147483648 元素(并且什么都不做),.Net 是否需要超过 2Gb 的 RAM?贵吗?

【问题讨论】:

    标签: c#


    【解决方案1】:

    你应该阅读这篇文章:

    “Out Of Memory” Does Not Refer to Physical Memory

    OutOfMemoryException 异常有两个主要原因:

    您正在尝试将 StringBuilder 对象扩展到超出长度 由其 StringBuilder.MaxCapacity 属性定义。

    公共语言运行时无法分配足够的连续内存 成功执行一项操作。这个异常可以被抛出 任何需要内存的属性分配或方法调用 分配。欲了解更多有关原因的信息 OutOfMemoryException 异常,见“内存不足” 不指 物理内存。

    这种类型的 OutOfMemoryException 异常代表了灾难性的 失败。如果您选择处理异常,则应包括 调用 Environment.FailFast 方法终止的 catch 块 您的应用程序并在系统事件日志中添加一个条目,如下所示 例子。

    【讨论】:

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