标签: c# .net clr
我发现System.Exception需要很多内存分配(很多String s,甚至IDictionary)。当没有足够的内存构建OutOfMemoryException时会发生什么?
System.Exception
String
IDictionary
OutOfMemoryException
搜索之后,我发现了一个类似的问题:What happens when there's insufficient memory to throw an OutOfMemoryError? CLR是否表现得那样?
答案 0 :(得分:3)
正如您(Cu2s)所提到的,框架预先分配了一些对象。 OutOfMemory不是唯一的。当然也需要StackOverflow。
请参阅来源here
还有blog post
您可以在WinDbg或其他工具中自己查看。
例如,当我运行此代码时:
static void Main() { Console.Read(); }
我在堆中看到以下内容:
答案 1 :(得分:1)
我找到了coreclr的源代码。似乎CLR预先分配了一些异常类。