如果我的Object大于.Net中的Gen 0大小会发生什么?

Che*_*sea 9 .net c#

在采访中,面试官问我以下内容:

假设Gen 0的大小为5 kb,我创建的对象大小为20 kb,会发生什么?

我回答说CLR将扩展Gen 0区域.

现在我很困惑这是否是正确的答案.

这是对的吗?

Jus*_*zas -2

大对象将跳过第 0 代和第 1 代。

小型 .NET 对象被分配到小型对象堆 (SOH) 上。

...

大于 85 KB 的对象将分配到大对象堆 (LOH) 上。由于复制大块内存的开销,它们没有被压缩。当发生完整GC时,未使用的LOH对象的地址范围将记录在可用空间分配表中。

来源:red-gate 关于 .NET 内存管理的文章

新分配的对象形成新一代对象,并且隐式为第 0 代集合,除非它们是大对象,在这种情况下,它们位于第 2 代集合中的大对象堆上。

来源:MS GC 文档