在.net中创建的内存不足异常对象

本文关键字:内存不足 异常 对象 创建 net | 更新日期: 2023-09-27 17:54:22

我有一个问题。据我所知,在.net内存不足的异常可以在以下3种情况下提出

  1. 拳击
  2. 创建数组
  3. 创建对象

通常在托管堆被分割或没有足够的空间容纳对象时引发。我的问题如果没有足够的托管堆,那么在哪里创建OutOfMemoryException对象?不是在托管堆上创建的吗?.Net框架如何确保堆上总是有足够的空间来创建OutOfMemoryException对象?

请帮助。我可能误解了什么

在.net中创建的内存不足异常对象

堆在.NET框架中是由.NET框架自己管理的,所以它为引发这些异常保留了必要的空间。例如,StackOverflow也是如此。

事实上,这两个异常都不能被客户端潜在地处理,或者它是危险的处理他们当你的应用程序在这种情况下(在OutOfMemory异常的情况下)。仍然有一些应用程序处理它,并试图以某种方式"安全"客户端,但结果不能保证,你只是尽你最大的努力。

当应用程序启动时,运行时预创建这些异常并将它们存储在一个静态列表中。如果需要抛出异常,则从该列表中检索异常并抛出。这种情况发生在OutOfMemoryExceptionStackOverflowException,以及其他一些可能在稍后创建问题的关键异常。

。Net Runtime在每个进程中为自己保留一些空间。这将有助于框架抛出像OutOfMemory这样的关键异常。

您可能还想阅读。net内存管理文章,如下面的

http://www.codeproject.com/Articles/483475/Memory-Limits-in-a-NET-Process

是否存在单个。net进程的内存限制

他们有很多细节和更多参考资料供你参考