内存管理-c#中GC.Collect方法的使用

本文关键字:方法 Collect GC 管理 -c# 内存 | 更新日期: 2023-09-27 18:01:22

可能重复:
什么时候可以调用GC.Collect?

GC.Collect方法的使用是必要的吗?它是一种良好的实践吗
如果,我应该何时使用此方法
如果,为什么?

编辑:参考MSDN:的含义是什么?使用此方法尝试回收无法访问的所有内存

内存管理-c#中GC.Collect方法的使用

作为一般规则。。。不要用它。

GC.Collect强制垃圾收集器进行收集,这意味着暂停程序的所有线程,以便垃圾收集器可以验证哪些对象不再被引用,并声明未使用的内存。

通常,GC会自动决定何时收集内存,考虑到程序何时空闲,或者分配的内存(虚拟内存(是否越来越少,因此为了分配更多内存,需要释放一些内存。根据我的经验,.NET GC(和微软一样(非常聪明,而且做得很好。其他GC(如mono(我没有使用它们的经验,但可能仍然会比开发人员决定何时执行集合做得更好。

当然,这对性能有很好的影响,而且与许多其他情况一样,它比您更清楚执行收集的最佳时间(在99%的情况下是正确的(。所以,不,这不是一个好的做法,只有当你有充分的理由这样做时,你才应该这样做……对它的作用和可能产生的后果有深刻的理解

一般不推荐使用;通常不被认为是良好的做法。

一般来说,GC比你更清楚什么需要清理,什么时候需要清理。最佳实践是让GC独自一人不受阻碍地开展业务,除非您有具体证据表明GC的策略正在导致问题,而这些问题可以通过迫使其采取不同的行为来解决。

这通常不是必要的,通常也不是使用它的好主意。

有时你需要使用它,但通常你在一个不理想的时间强制收集,这会影响性能。

这里和这里都对这个问题进行了很好的讨论。

我在这里解释了一些相关的事情:

WPF内存泄漏