|
|
1
42
限制适用于每个 单一的 对象——不是所有对象的总大小——这意味着使用某种复合集合相对容易解决问题。 这里有一个讨论和一些示例代码。。。 似乎很少有官方文件提到这一限制。毕竟,它只是当前CLR的一个实现细节。我唯一知道的是 on this page :
|
|
2
22
在.NET 4.5之前的版本中,最大对象大小为2GB。从4.5版开始,如果
gcAllowVeryLargeObjects
已启用。请注意
|
|
|
3
11
更清楚的是,字典使用单个数组来添加对。它生长(加倍?)每次都是满的。当有5.12亿个对象时,它的大小是2GByte(有一个32位的对象指针,并且假设完全分布)。再添加一个元素会使字典再次尝试将数组大小增加一倍。繁荣。 C5 HashDictionary使用线性哈希,可能使用一个bucket数组,每个bucket包含多个(16?)元素。以后也会遇到同样的问题。 |
|
|
4
1
当一个人需要存储很多对象时,你会看到的问题是 GC暂停(暂停)。我们所做的是从GC中“隐藏”数据,这变成了 看这个: https://www.infoq.com/articles/Big-Memory-Part-3 可以将缓存用作字典: https://github.com/aumcode/nfx/tree/master/Source/NFX/ApplicationModel/Pile 请参见“缓存”部分 |