有人知道列表中的最大项目数是多少吗?
我如何增加这个大小?或者是否有一个可以容纳无限物品的集合? (也就是说,尽可能多地容纳在内存中)
EDIT:
当整数列表中的 Count = 134217728 时,出现内存不足异常。拥有 3Gb RAM,其中 2.2GB 正在使用中。声音正常
List<T>
将限制为数组的最大值,即 2GB(即使在 x64 中)。如果这还不够,则说明您使用了错误的数据存储类型。不过,通过将其启动为正确的大小,您可以节省大量开销 - 通过传递int
到构造函数。
重新编辑 - 使用 134217728 x Int32,即 512MB。请记住List<T>
使用加倍算法;如果您通过滴喂物品Add
(不先分配所有空间)它将尝试加倍到 1GB(在您已经持有的 512MB 之上,应用程序的其余部分,当然还有 CLR 运行时和库)。我假设您使用的是 x86,因此您已经有 2GB 限制每个进程,并且您可能已将“大对象堆”碎片化为death添加项目时。
就我个人而言,是的,此时开始出现内存不足听起来是正确的。
编辑:在 .NET 4.5 中,如果满足以下条件,则允许大于 2GB 的数组:<gcAllowVeryLargeObjects> http://msdn.microsoft.com/en-us/library/hh285054.aspx开关已启用。则限制为 2^31 项。这对于引用数组(x64 中每个 8 个字节)或大型数组可能很有用struct
s.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)