<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>