【问题标题】:Out of Memory Exception in runtime运行时内存不足异常
【发布时间】:2013-06-20 11:04:16
【问题描述】:

即使使用垃圾收集器,运行时是否也可能发生内存不足异常?

有人问我这个问题,但我不确定。

【问题讨论】:

  • 有可能。 GC 不是帮你把所有数据都装进内存,而是让你不用管内存(de)分配
  • 如果不可能发生这样的异常,那么为什么首先会有异常呢?

标签: c# memory-management garbage-collection


【解决方案1】:

是的,如果你使用过多的内存,就会发生该异常。

垃圾收集器只是清除你永远不会再访问的内存。

...这个答案太明显了,也许您问的问题与您的意思不同?如果是这样,请澄清。

【讨论】:

    【解决方案2】:

    是的,我以前也遇到过。

    很明显:如果你使用了太多内存,就会触发这个异常。

    垃圾收集器只是清除您无法再访问的数据,并没有以神奇的方式增加可用内存量。

    【讨论】:

    • 大家好,这是对所提问题的有效答案,+1
    • @zerkms,虽然答案是布尔值,但我认为应该对此进行解释。只是说“是的,确实如此”并不构成答案。
    • @gunr2171:确实如此。至少它会教 OP 提出更好的问题。这不是回答者的错。
    【解决方案3】:

    垃圾收集器仅声明应用程序根不再引用的“垃圾”对象。如果托管堆已满,并且其中的每个对象仍然被应用程序根引用(意味着该对象仍然可以被应用程序访问),您将获得一个OutOfMemoryException

    我强烈建议您阅读this 以了解 GC 的工作原理。关于Finalize方法的部分也很有趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      相关资源
      最近更新 更多