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

6 .net c# garbage-collection

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

谢谢,

Nik*_*tov 8

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

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

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

  • 那么.. clr 是否会在程序中定期检查物理内存,如果物理内存较低,则调用 GC? (2认同)

Tig*_*ran 0

您无法控制GC也无法可靠地预测其行为。所有调用(如向 VM 发出的用于开始收集的GC.Collect简单消息),但这并不意味着收集最终将在该行之后立即开始。