C#中型集合中的大对象

时间:2015-09-05 16:32:56

标签: c# .net large-object-heap

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

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

Byte[] hugeByteCollection = new Byte[85000]; 

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

1 个答案:

答案 0 :(得分:4)

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

编辑: 感谢Hans Passant指出这假设使用的集合类型是数组而不是列表。列表调整自身大小比内容大,以避免分配太多。有关详细信息,请参阅this link