垃圾收集现在应该已经运行了

本文关键字:运行 | 更新日期: 2023-09-27 17:59:44

在过去的几周里,我运行了一个C#应用程序。当我第一次启动它时,它的内存使用量约为10000K。从那以后,我进行了检查,发现它的内存占用量约为20000K。

我不太了解.Net垃圾收集,但这是我肯定内存泄漏的迹象吗?GC现在不应该已经运行了吗?

我在这里读到了垃圾收集:

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

对于GC何时应该运行,它们有以下条件:

  • 系统的物理内存不足(我还有超过70000K的内存要使用,所以不应该触发)

  • 托管堆上已分配对象使用的内存超过可接受的阈值。此阈值是连续的随着过程的运行而调整(如何定义"可接受"阈值?)

难道我不应该期待GC在几周后运行吗?

垃圾收集现在应该已经运行了

难道我不应该期待GC在几周后运行吗?

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

当出现以下情况之一时,将发生垃圾收集true:

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

阅读本文了解更多基本细节。