有人知道列表中的最大项目数是多少?
如何增加这个尺寸?或者是否有一个收集无限物品的集合?(尽可能多地适合记忆)
编辑:
当在一个int列表中Count = 134217728时,我得到一个内存不足异常.获得了3G的RAM,其中2.2正在使用中.声音正常
Mar*_*ell 57
List<T>将被限制为数组的最大值,即2GB(即使在x64中).如果这还不够,那么您使用的是错误类型的数据存储.您可以通过启动正确的大小来节省大量开销 - 通过传递int给构造函数.
重新编辑 - 使用134217728 x Int32,即512MB.请记住,List<T>使用加倍算法; 如果你通过滴水喂食物品Add(没有首先分配所有空间),它将尝试加倍到1GB(在你已经拥有的512MB之上,你的应用程序的其余部分,当然还有CLR运行时和库).我假设您使用的是x86,因此每个进程已经有2GB的限制,并且很可能在添加项目时将您的"大对象堆"碎片化为死亡.
就个人而言,这听起来似乎是正确的开始在这一点上获得记忆.
编辑:在.NET 4.5中,如果<gcAllowVeryLargeObjects>启用了交换机,则允许大于2GB的阵列.那么限制是2 ^ 31项.这可能对引用数组(x64中每个8字节)或大structs 数组有用.
| 归档时间: |
|
| 查看次数: |
51532 次 |
| 最近记录: |