C# 在.Net中创建的内存不足异常对象在哪里?

C# 在.Net中创建的内存不足异常对象在哪里?,c#,memory-management,garbage-collection,C#,Memory Management,Garbage Collection,我有个问题。据我所知,在以下3种情况下可以引发in.net内存不足异常 拳击 创建数组 创建对象 通常,当托管堆支离破碎或没有足够的空间容纳对象时,会引发它。我的问题如果托管堆不足,那么创建OutOfMemoryException对象的位置是哪里?它不是在托管堆上创建的吗?Net framework如何确保堆上始终有足够的空间来创建OutOfMemoryException对象 请帮忙。我可能误解了什么。堆在.NET框架中是由.NET框架本身管理的,因此它为引发此类异常保留了必要的空间。例如,St

我有个问题。据我所知,在以下3种情况下可以引发in.net内存不足异常

  • 拳击
  • 创建数组
  • 创建对象
  • 通常,当托管堆支离破碎或没有足够的空间容纳对象时,会引发它。我的问题如果托管堆不足,那么创建OutOfMemoryException对象的位置是哪里?它不是在托管堆上创建的吗?Net framework如何确保堆上始终有足够的空间来创建OutOfMemoryException对象


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

    堆在
    .NET
    框架中是由
    .NET
    框架本身管理的,因此它为引发此类异常保留了必要的空间。例如,
    StackOverflow
    也是如此


    事实上,客户端无法潜在地处理这两个异常,或者在这种情况下处理它们是危险的(在
    OutOfMemory
    exception的情况下)。仍然有一些应用程序可以处理它,并试图以某种方式“保护”客户端,但其结果并不能保证,您只需尽最大努力。

    堆在
    .NET
    框架中由
    .NET
    框架本身管理,因此它为引发此类异常保留了必要的空间。例如,
    StackOverflow
    也是如此


    事实上,客户端无法潜在地处理这两个异常,或者在这种情况下处理它们是危险的(在
    OutOfMemory
    exception的情况下)。仍然有一些应用程序可以处理它,并试图以某种方式“保护”客户端,但结果并不能保证,您只需尽最大努力即可。

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

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

    .Net运行时在每个进程中为自己保留一些空间。这将有助于框架排除关键异常,如OutOfMemory

    您可能还想阅读下面的.Net内存管理文章


    它们有很多细节和更多的参考供您参考

    。Net运行时在每个进程中为自己保留一些空间。这将有助于框架排除关键异常,如OutOfMemory

    您可能还想阅读下面的.Net内存管理文章


    它们有很多详细信息和更多参考资料供您参考

    Delphi在应用程序启动时简单地分配它。将帮助您理解中的内存分配。NetDelphi仅在应用程序启动时分配内存。将帮助您了解.Net中的内存分配