在C#中何时触发垃圾收集?

在C#中何时触发垃圾收集?,c#,.net,garbage-collection,C#,.net,Garbage Collection,我读了很多关于垃圾收集的东西,比如垃圾收集的产生、范围等,但我想知道垃圾收集何时被触发? 如果可能的话,举个例子会很有帮助 谢谢,您无法控制GC并且无法可靠地预测其行为。 所有调用,如GC.Collect都是发送给VM的简单消息,用于启动收集,但这并不意味着收集最终将在该行之后立即启动 当下列条件之一为真时,会发生垃圾回收: 系统的物理内存不足 托管堆上已分配对象使用的内存超过可接受的阈值。此阈值在进程运行时不断调整 调用GC.Collect方法。在几乎所有情况下,您都不必调用此方法,因为垃圾

我读了很多关于垃圾收集的东西,比如垃圾收集的产生、范围等,但我想知道垃圾收集何时被触发? 如果可能的话,举个例子会很有帮助


谢谢,

您无法控制
GC
并且无法可靠地预测其行为。
所有调用,如
GC.Collect
都是发送给VM的简单消息,用于启动收集,但这并不意味着收集最终将在该行之后立即启动

当下列条件之一为真时,会发生垃圾回收:

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

资料来源:

so。。clr是否定期检查程序中的物理内存,如果内存较低,则调用GC?很可能是。如果Microsoft说在系统内存不足时调用GC,则应通知CLR或检查内存是否不足。我没有足够的分数,@MikeNakis:)了解您想知道的原因会很有帮助。GC在感觉是进行收集的好时机时进行收集;其内部政策不是有文件证明的、有保证的行为的一部分。如果你只是好奇,那是一回事。如果你打算开发依赖于特定GC策略的软件,那你就如履薄冰。@EricLippert-最近我在采访中被问到这个问题……所以我想知道。