相关疑难解决方法(0)

我用List <string>命中了OutOfMemoryException - 这是限制还是我遗漏了什么?

如果有机会重写,我会,但无论如何,代码如下:

List<string> foobar;
Run Code Online (Sandbox Code Playgroud)

然后我们将一堆字符串添加到foobar.

在count = 16777216时,我们达到了内存不足的限制.

我的理解是每个字符串的大小不同.确实在查看数据(不是我的数据),大多数是2或3个字符.

c#中数据的最大限制是多少?表示最大限制为:

可以存储在List的当前实现中的最大元素数量理论上是Int32.MaxValue - 仅超过20亿.

然而:

在当前的CLR的Microsoft实现中,最大对象大小限制为2GB.(有可能其他实现,例如Mono,没有这个限制.)

在我的例子中,我有什么,1600万个结果*几个字节?任务管理器显示正在使用的演出,但我有8演出的RAM.

16777216(2 ^ 24)似乎是一个相当具体的价值 - 可疑地像一个限制,但我无法找到任何文件a)支持这个或b)找到解决方法?

任何帮助,将不胜感激.


一些代码:

List<string> returnList = new List<string>();
SqlDataReader dr; //  executes a read on a database, have removed that part as that bit works fine

  if (dr.HasRows)
  {
      while (dr.Read())
      {
          returnList.Add(dr.GetString(0).Trim());
      }
  }
Run Code Online (Sandbox Code Playgroud)

这是简化的形式,我现在有一些尝试/捕获OOM异常,但这是给我悲伤的实际代码.

c# memory list out-of-memory

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×1

list ×1

memory ×1

out-of-memory ×1