我看到了多个建议运行 GC.Collect(GC.MaxGeneration)
的答案。
既然方法GC.Collect()
会收集所有存在的分代,那么两者有什么区别吗?
也许如果只有两代而不是三代,GC 将收集两代,而不会尝试收集第三代,这将提高性能。但说真的,这有意义吗?
最佳答案
唯一的区别是 GC.Collect()
将使用 GCCollectionMode.Optimized
但是 GC.Collect(GC.MaxGeneration)
将使用 GCCollectionMode.Default
(至少在 .NET Framework 4.5 中)。在重载中,您也可以手动指定收集模式。
/// <summary>Specifies the behavior for a forced garbage collection.</summary>
public enum GCCollectionMode
{
/// <summary>The default setting for this enumeration, which is currently <see cref="F:System.GCCollectionMode.Forced" />. </summary>
Default,
/// <summary>Forces the garbage collection to occur immediately.</summary>
Forced,
/// <summary>Allows the garbage collector to determine whether the current time is optimal to reclaim objects. </summary>
Optimized
}
关于c# - GC.Collect() 和 GC.Collect(GC.MaxGeneration) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876691/