当没有内存在C#中构造OutOfMemoryException时会发生什么?

时间:2016-05-22 02:45:25

标签: c# .net clr

我发现System.Exception需要很多内存分配(很多String s,甚至IDictionary)。当没有足够的内存构建OutOfMemoryException时会发生什么?

搜索之后,我发现了一个类似的问题:What happens when there's insufficient memory to throw an OutOfMemoryError? CLR是否表现得那样?

2 个答案:

答案 0 :(得分:3)

正如您(Cu2s)所提到的,框架预先分配了一些对象。 OutOfMemory不是唯一的。当然也需要StackOverflow。

请参阅来源here

还有blog post

您可以在WinDbg或其他工具中自己查看。

例如,当我运行此代码时:

static void Main()
{
    Console.Read();
}

我在堆中看到以下内容:

enter image description here

答案 1 :(得分:1)

我找到了coreclr的源代码。似乎CLR预先分配了一些异常类。