<gcServer> 元素

指定公共语言运行时是否运行服务器垃圾回收。

<configuration>
  <runtime>
    <gcServer>

语法

<gcServer
   enabled="true|false"/>

特性和元素

下列各节描述了特性、子元素和父元素。

特性

属性 描述
enabled 必需的特性。

指定运行时是否运行服务器垃圾回收。

enabled 属性

说明
false 请勿运行服务器垃圾回收。 这是默认值。
true 运行服务器垃圾回收。

子元素

无。

父元素

元素 说明
configuration 公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。
runtime 包含有关程序集绑定和垃圾回收的信息。

注解

公共语言运行时 (CLR) 支持两种类型的垃圾回收:工作站垃圾回收(适用于所有系统)和服务器垃圾回收(适用于多处理器系统)。 使用 gcServer 元素以控制 CLR 执行的垃圾回收类型。 使用 GCSettings.IsServerGC 属性以确定是否启用服务器垃圾回收。

对于单处理器计算机,默认的工作站垃圾回收应该是最快捷的选项。 对于双处理器计算机,最快捷的选项既可以是工作站垃圾回收又可以是服务器垃圾回收。 对于两个以上处理器的计算机,服务器垃圾回收应该是最快捷的选项。 最常见的情况是,当服务器应用的许多实例在同一台计算机上运行时,多处理器服务器系统禁用服务器 GC,而使用工作站 GC。

此元素只能在应用程序配置文件中使用;如果此元素在计算机配置文件中,请忽略。

注意

在 .NET Framework 4 和更低版本中,启用服务器垃圾回收之后,并发垃圾回收不可用。 从 .NET Framework 4.5 开始,服务器垃圾回收将并发执行。 若要使用非并发服务器垃圾回收,请将 gcServer 元素设置为 true,并将 gcConcurrent 元素设置为 false

从 .NET Framework 4.6.2 开始,你也可以使用以下元素来配置服务器 GC:

  • GCNoAffinitize,用于指定服务器 GC 堆与处理器之间是否存在关联。 默认情况下,每个处理器都有一个服务器 GC 堆。

  • GCHeapCount,用于限制进程使用的堆数。

  • GCHeapAffinitizeMask,用于定义可用服务器 GC 堆和单个处理器之间的关联。

示例

下面的示例启用服务器垃圾回收:

<configuration>
   <runtime>
      <gcServer enabled="true"/>
   </runtime>
</configuration>

另请参阅