【发布时间】:2013-12-12 06:11:43
【问题描述】:
我有以下代码:
List<long> numbers = new List<long>();
for (long i = 1; i <= 300000000; i++)
{
numbers.Add(i);
}
我想做的是从 1 到 3 亿填充列表。但是当它到达 67108865 时,它会在第 4 行抛出异常:Exception of type 'System.OutOfMemoryException' was thrown.
我尝试使用ulong,但仍然没有成功。
我认为 long 数据类型的最大范围是 9,223,372,036,854,775,807,但为什么我会出现错误?
提前致谢!
编辑 感谢所有的答案。它帮助我意识到我的设计并不好。我最终改变了我的代码设计。
【问题讨论】:
-
如果这是一个 32 位应用程序,您可能会达到可用地址空间的限制
-
谢谢,但我仍然遇到错误,但现在在 134217729 上。我使用了 64 位设置。
-
它可能是 List 容量尝试 LinkedList 代替
-
杰拉德你在做什么,你一次需要这么多的对象在内存中?您可能需要使用不同的设计策略,例如将数据分成更小的块或使用数据库而不是将整个列表存储在内存中。
-
@ScottChamberlain 我正在解决 Project Euler 中的一个问题。我同意你的观点,因为我尝试使用 x64 位应用程序对列表进行分区,但我的计算机放弃了,因为我的 RAM 不足(仅限 4GB)。
标签: c#