在.net中创建的内存不足异常对象
本文关键字:内存不足 异常 对象 创建 net | 更新日期: 2023-09-27 17:54:22
我有一个问题。据我所知,在.net内存不足的异常可以在以下3种情况下提出
- 拳击
- 创建数组
- 创建对象
通常在托管堆被分割或没有足够的空间容纳对象时引发。我的问题如果没有足够的托管堆,那么在哪里创建OutOfMemoryException对象?不是在托管堆上创建的吗?.Net框架如何确保堆上总是有足够的空间来创建OutOfMemoryException对象?
请帮助。我可能误解了什么
堆在.NET
框架中是由.NET
框架自己管理的,所以它为引发这些异常保留了必要的空间。例如,StackOverflow
也是如此。
事实上,这两个异常都不能被客户端潜在地处理,或者它是危险的处理他们当你的应用程序在这种情况下(在OutOfMemory
异常的情况下)。仍然有一些应用程序处理它,并试图以某种方式"安全"客户端,但结果不能保证,你只是尽你最大的努力。
当应用程序启动时,运行时预创建这些异常并将它们存储在一个静态列表中。如果需要抛出异常,则从该列表中检索异常并抛出。这种情况发生在OutOfMemoryException
和StackOverflowException
,以及其他一些可能在稍后创建问题的关键异常。
。Net Runtime在每个进程中为自己保留一些空间。这将有助于框架抛出像OutOfMemory这样的关键异常。
您可能还想阅读。net内存管理文章,如下面的
http://www.codeproject.com/Articles/483475/Memory-Limits-in-a-NET-Process是否存在单个。net进程的内存限制
他们有很多细节和更多参考资料供你参考