<GCHeapAffinitizeMask> 元素

定义 GC 堆与单个处理器之间的关联。

<configuration>
  <运行库>
    <GCHeapAffinitizeMask>

语法

<GCHeapAffinitizeMask
   enabled="nnnn"/>

特性和元素

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

特性

属性 描述
enabled 必需的特性。

指定 GC 堆与单个处理器之间的关联。

enabled 特性

说明
nnnn 一个十进制值,用于形成一个可定义服务器 GC 堆与单个处理器之间关联的位掩码。

子元素

无。

父元素

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

注解

默认情况下,服务器 GC 线程与各自的 CPU 进行硬连接,以便每个处理器有一个 GC 堆、一个服务器 GC 线程和一个后台服务器 GC 线程。 从 .NET Framework 4.6.2 开始,当堆数受 GCHeapCount 元素限制时,可以使用 GCHeapAffinitizeMask 元素来控制服务器 GC 堆和处理器之间的关联。

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

  • GCNoAffinitize,用于控制服务器 GC 线程/堆是否与 CPU 进行连接。 对于要使用的 GCHeapAffinitizeMask 设定,GCNoAffinitize 元素的 enabled 属性必须为 false(其默认值)。

  • GCHeapCount,用于限制服务器 GC 进程使用的堆数。 默认情况下,每个处理器都有一个服务器 GC 堆。

nnnn 是表示为十进制值的位掩码。 字节 0 的位 0 表示处理器 0,字节 0 的位 1 表示处理器 1,依此类推。 例如:

<GCHeapAffinitizeMask enabled="1023"/>

值 1023 为 0x3FF 或 0011 1111 1111b。 进程使用 10 个处理器,从处理器 0 到处理器 9。

示例

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

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

另请参阅