<GCHeapCount> 元素

指定用于服务器垃圾回收的堆/线程数。

<configuration>
  <运行库>
    <GCHeapCount>

语法

<GCHeapCount
   enabled="nn"/>

特性和元素

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

特性

属性 描述
enabled 必需的特性。

指定用于服务器垃圾回收的堆数。 实际堆数是指定的堆数和进程允许使用的处理器数的最小值。

enabled 属性

说明
nn 要用于服务器 GC 的堆数。

子元素

无。

父元素

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

注解

默认情况下,服务器 GC 线程与各自的 CPU 进行硬连接,以便每个处理器有一个 GC 堆、一个服务器 GC 线程和一个后台服务器 GC 线程。 从 .NET Framework 4.6.2 开始,你可以使用 GCHeapCount 元素来限制应用程序用于服务器 GC 的堆数。 限制用于服务器 GC 的堆数对于运行服务器应用程序的多个实例的系统特别有用。

GCHeapCount 通常与其他两个标志一起使用:

如果设置了 GCHeapCount 并且已禁用 GCNoAffinitize(其默认设置),则 nn 个 GC 线程/堆和前 nn 个处理器之间具有相关性。 可以使用 GCHeapAffinitizeMask 元素指定进程的服务器 GC 堆使用哪些处理器。 否则,如果多个服务器进程在一个系统上运行,则其处理器使用将重叠。

如果设置了 GCHeapCount 并启用了 GCNoAffinitize,垃圾回收器将限制用于服务器 GC 的处理器数,但不关联 GC 堆和处理器。

示例

以下示例指示应用程序使用具有 10 个堆/线程的服务器 GC。 由于不希望这些堆与系统上运行的其他应用程序中的堆重叠,因此你使用 GCHeapAffinitizeMask 指定进程应该使用 CPU 0 到 CPU 9。

<configuration>
   <runtime>
      <gcServer enabled="true"/>
      <GCHeapCount enabled="10"/>
      <GCHeapAffinitizeMask enabled="1023"/>
   </runtime>
</configuration>

以下示例不关联服务器 GC 线程,并且将 GC 堆/线程数限制为 10。

<configuration>
   <runtime>
      <gcServer enabled="true"/>
      <GCHeapCount enabled="10"/>
      <GCNoAffinitize enabled="true"/>
   </runtime>
</configuration>

请参阅