如果有机会重写,我会,但无论如何,代码是这样的:
List<string> foobar;
然后我们在 foobar 中添加一堆字符串。
在 count=16777216 时,我们达到了内存不足的限制。
我的理解是每个字符串的大小都不同。确实看数据(不是我的数据),大多数是 2 或 3 个字符。
c# 中列表中数据的最大限制是多少?表示最大限制为:
理论上,当前 List 实现中可以存储的最大元素数是 Int32.MaxValue - 刚刚超过 20 亿。
然而:
在当前 Microsoft 的 CLR 实现中,最大对象大小限制为 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());
}
}
这是简化的形式,我现在对 OOM 异常进行了一些尝试/捕获,但这是让我感到悲伤的实际代码。