【发布时间】:2013-06-20 11:04:16
【问题描述】:
即使使用垃圾收集器,运行时是否也可能发生内存不足异常?
有人问我这个问题,但我不确定。
【问题讨论】:
-
有可能。 GC 不是帮你把所有数据都装进内存,而是让你不用管内存(de)分配
-
如果不可能发生这样的异常,那么为什么首先会有异常呢?
标签: c# memory-management garbage-collection
即使使用垃圾收集器,运行时是否也可能发生内存不足异常?
有人问我这个问题,但我不确定。
【问题讨论】:
标签: c# memory-management garbage-collection
是的,如果你使用过多的内存,就会发生该异常。
垃圾收集器只是清除你永远不会再访问的内存。
...这个答案太明显了,也许您问的问题与您的意思不同?如果是这样,请澄清。
【讨论】:
是的,我以前也遇到过。
很明显:如果你使用了太多内存,就会触发这个异常。
垃圾收集器只是清除您无法再访问的数据,并没有以神奇的方式增加可用内存量。
【讨论】:
垃圾收集器仅声明应用程序根不再引用的“垃圾”对象。如果托管堆已满,并且其中的每个对象仍然被应用程序根引用(意味着该对象仍然可以被应用程序访问),您将获得一个OutOfMemoryException。
我强烈建议您阅读this 以了解 GC 的工作原理。关于Finalize方法的部分也很有趣。
【讨论】: