什么时候垃圾收集在C#中被触发?

时间:2015-02-11 18:26:06

标签: c# .net garbage-collection

我读了很多关于垃圾收集的事情,比如它的生成,范围等,但是想知道什么时候垃圾收集被触发了? 如果可能的话,一个例子将非常有用。

谢谢,

2 个答案:

答案 0 :(得分:6)

当满足下列条件之一时,就会发生垃圾收集:

  • 系统物理内存不足。
  • 托管堆上已分配对象使用的内存超过可接受的阈值。随着流程的运行,该阈值会不断调整。
  • 调用GC.Collect方法。几乎在所有情况下,您都不必调用此方法,因为垃圾收集器会持续运行。此方法主要用于独特的情况和测试。

来源:https://msdn.microsoft.com/en-us/library/ee787088%28v=vs.110%29.aspx#conditions_for_a_garbage_collection

答案 1 :(得分:0)

您无法控制GC,无法可靠地预测其行为。 所有调用(例如GC.Collect)都是简单的消息到VM以开始收集,但这并不意味着集合最终在行之后开始。