【发布时间】:2011-09-28 05:01:51
【问题描述】:
【问题讨论】:
标签: c# memory-management garbage-collection
【问题讨论】:
标签: c# memory-management garbage-collection
作为一般规则...不要使用它。
GC.Collect 强制垃圾收集器进行收集,这意味着暂停程序的所有线程,以便垃圾收集器可以验证哪些对象不再被引用并声明未使用的内存。
通常 GC 会自动决定何时收集内存,考虑您的程序何时空闲或分配的内存(虚拟内存)是否变低,因此为了分配更多内存,它需要释放一些内存。以我的经验,.NET GC(就像在 Microsoft 中一样)非常智能,并且做得很好。其他 GC(如单声道)我没有使用它们的经验,但仍然可能比开发人员决定何时执行收集做得更好。
当然,这对性能有很好的影响,并且与许多其他情况一样,它比您更清楚执行收集的最佳时间(在 99% 的情况下这是正确的)。所以不,这不是一个好的做法,您应该只有在您有充分理由这样做时才应该这样做......深入了解它的作用以及它可能产生的后果。
【讨论】:
一般不推荐;通常不被认为是好的做法。
一般来说,GC 比你更清楚什么需要清理,什么时候需要清理。最佳实践是让 GC 不受阻碍地独自开展其业务除非您有具体证据证明 GC 的策略正在导致可以通过强制其采取不同行为来解决的问题。
【讨论】:
我在这里解释了一些相关的事情:
【讨论】: