c# - .NET framework 如何为 OutOfMemoryException 分配内存?

标签 c# .net out-of-memory

在 C++ 中,实际上可以按值抛出异常而无需在堆上分配内存,因此这种情况是有道理的。但在 .NET 框架中 OutOfMemoryException 是一个引用类型,因此它被分配在堆上。 当没有足够的内存来创建新对象时,.NET framework 如何为 OutOfMemoryException 分配内存?

最佳答案

它由运行时预分配。如果您探索任何托管进程的堆,您会发现该异常的一个实例。

以下是 Hello World 应用程序的预分配异常:

0:003> !dumpheap -stat -type Exception
Statistics:
      MT    Count    TotalSize Class Name
735f2920        1           84 System.ExecutionEngineException
735f28dc        1           84 System.StackOverflowException
735f2898        1           84 System.OutOfMemoryException
735f2744        1           84 System.Exception
735f2964        2          168 System.Threading.ThreadAbortException

关于c# - .NET framework 如何为 OutOfMemoryException 分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439897/

相关文章:

c# - 帮助合并 XML 数据

c# - 将参数传递到 T4 模板内的单元测试

c# - 如何以编程方式将 ContextMenu 添加到系统托盘图标?

c# - 如何压缩zip文件中的多个文件

android - 大位图内存不足异常

c# - 如何将对象从组合框选择的项目转换为字符串

.net - 从 List<> 中获取单个随机元素的最佳方法是什么?

c# - 递归条件 - 最佳实践

linux - 为 Docker 容器中的子进程调整 OOM killer

Android处理图像处理时的内存不足异常