中型集合中的 C# 大对象

C# Large object in medium size collection

我对内存问题还很陌生。希望你不要认为这是一个愚蠢的问题。

我知道在 C# 中大于 85,000 字节的内存会被放入 LOH 即

Byte[] hugeByteCollection = new Byte[85000]; 

我想知道大小为 10000 - 20000 且对象包含 10 个成员变量(字节类型)的集合是否会被放入 LOH 或 SOH 中?

对象数组的大小是对象数乘以指针大小。这是因为只有值类型存储在数组本身中,引用类型(对象)将存储在其他地方并且不计入数组的大小。所以85000/4=21250个对象,85000/8=10625个对象在32位和64位模式下分别可以存储在SOH上的一个数组中

编辑: 感谢 Hans Passant 指出,这假定使用的集合类型是数组而不是列表。列表会自行调整大小以使其大于内容以避免分配过多。详情见this link