首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GC.Collect()和GC.Collect(GC.MaxGeneration)有什么区别?

GC.Collect()和GC.Collect(GC.MaxGeneration)有什么区别?
EN

Stack Overflow用户
提问于 2013-04-08 18:21:28
回答 5查看 5.8K关注 0票数 3

我见过很多建议运行GC.Collect(GC.MaxGeneration)的浏览器。

由于GC.Collect()方法将收集所有现有的世代,这两者之间有什么区别吗?

也许如果只有两个世代而不是三个世代,GC将收集两个世代,并且不会尝试收集第三个世代,这将提高性能。但说真的,这有意义吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-08 18:40:30

GC.Collect()GC.Collect(GC.MaxGeneration)都使用GCCollectionMode.Default

所以,那就没有区别了!

根据MSDN

GCCollectionMode枚举

默认值:此枚举的默认设置,当前为强制设置。

Forced :强制立即进行垃圾回收。

优化:允许垃圾回收器确定当前时间是否是回收对象的最佳时间。

使用Reflector:

代码语言:javascript
复制
[MethodImpl(MethodImplOptions.InternalCall)]
private static void nativeCollectGeneration(int generation, int mode); 

public static void Collect()
{
  GC.nativeCollectGeneration(-1, 0);
}

public static void Collect(int generation)
{
  GC.Collect(generation, GCCollectionMode.Default);
}

P.S.0GCCollectionMode.Default相同。

票数 0
EN

Stack Overflow用户

发布于 2013-04-08 18:32:05

唯一的区别是GC.Collect()将使用GCCollectionMode.Optimized,而GC.Collect(GC.MaxGeneration)将使用GCCollectionMode.Default (至少在.NET Framework4.5中)。有一些重载,您也可以手动指定收集模式。

代码语言:javascript
复制
/// <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
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-08 18:42:33

GC.Collect()可能什么也不做,因为它为GCCollectionMode使用了'Optimized‘

MSDN on Optimized->允许垃圾收集器确定当前时间是否是回收对象的最佳时间。

GC.Collect(GC.MaxGeneration)对GCCollectionMode使用'Forced‘

强制->上的MSDN强制立即进行垃圾回收。

两者都将尝试为所有几代人回收资源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15876691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档