垃圾收集现在应该运行吗?

时间:2016-08-02 06:24:37

标签: c# memory-leaks garbage-collection

过去几周我运行了一个C#应用程序。当我第一次启动它时,它有大约10000K的内存使用量。从那时起,我已经检查了它,内存占用了大约20000K。

我不知道.Net垃圾收集非常好,但这是否表明我确实有内存泄漏? GC现在不应该运行吗?

我在这里读到垃圾收集:

https://msdn.microsoft.com/en-us/library/ee787088(v=vs.110).aspx

他们在运行GC时有以下条件:

  • 系统物理内存较低。 (我还有超过70000K的内存可供使用,所以不应该触发)

  • 托管堆上已分配对象使用的内存 超过可接受的门槛。这个门槛是连续的 随着流程的进行调整。 (如何定义“可接受的”阈值?)

我不应该期望GC在几周的时间内运行吗?

1 个答案:

答案 0 :(得分:0)

  

我不应该期望GC在几周的时间内运行吗?

不,你不应该期望GC.Collect及时发生。

  

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

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

阅读此内容以获取更多fundamental详细信息。