【发布时间】:2010-10-29 01:53:04
【问题描述】:
我需要构建一个大字符串列表并将其保存在内存中,但是在构建它时会引发 OutOfMemoryException。根据资源监视器,我仍然有 1GB 的可用内存。我发现this KB article 解决了这个问题,但它似乎应该在框架 1.1 SP1 中得到修复(我使用的是 3.5 sp1)。
任何人都可以了解幕后发生的事情吗? .net 框架是否限制单个进程(在 32 位系统上)可以使用多少内存?如果是这样,我可以理解原因,但没有意义的是应用程序只使用了 1.6GB,系统还剩下大约 1GB。
编辑 - 对于那些在这里询问的人,这里有一些更深入的信息:
我有一个列表(是的,我可以使用其他东西,但我现在只是在做原型。),我通过执行 Guid.NewGuid().ToString() 生成一个随机字符串,并将其放入列表中.我要做的是生成一个包含尽可能多的项目的列表,并测试查找特定项目的不同方法。我的第一个猜测是一些碎片正在发生,但我放弃了除了下面的代码之外的所有内容,它仍然会发生。我不认为这个小 sn-p 会造成很多碎片,但我可能错了。
List<string> blah = new List<string>();
for (int i = 0; i < 50000000; i++)
{
blah.Add(Guid.NewGuid().ToString());
}
【问题讨论】:
-
您能否提供一个代码 sn-p,说明您遇到 OutOfMemoryException 的位置?
-
你使用什么数据结构?列表
?