定义 GC 堆与单个处理器之间的相关性。
<配置>
<运行>
<GCHeapAffinitizeMask>
Syntax
<GCHeapAffinitizeMask
enabled="nnnn"/>
属性和元素
下列各节描述了特性、子元素和父元素。
特性
| Attribute | Description |
|---|---|
enabled |
必需属性。 指定 GC 堆与单个处理器之间的相关性。 |
enabled 属性
| 价值 | Description |
|---|---|
nnnn |
形成位掩码的十进制值,用于定义服务器 GC 堆与单个处理器之间的相关性。 |
子元素
没有。
父元素
| 元素 | Description |
|---|---|
configuration |
公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。 |
runtime |
包含有关程序集绑定和垃圾回收的信息。 |
注解
默认情况下,服务器 GC 线程与其各自的 CPU 进行硬关联,以便每个处理器有一个 GC 堆、一个服务器 GC 线程和一个后台服务器 GC 线程。 从 .NET Framework 4.6.2 开始,当堆数受GCHeapCount元素限制时,可以使用GCHeapAffinitizeMask该元素来控制服务器 GC 堆和处理器之间的相关性。
GCHeapAffinitizeMask 通常与其他两个标志一起使用:
GCNoAffinitize,用于控制服务器 GC 线程/堆是否与 CPU 关联。
enabledGCNoAffinitize 元素的属性必须是false要使用的设置(其默认值GCHeapAffinitizeMask)。GCHeapCount,用于限制进程用于服务器 GC 的堆数。 默认情况下,每个处理器都有一个堆。
nn 是 表示为十进制值的位掩码。 字节 0 的位 0 表示处理器 0,字节 0 的位 1 表示处理器 1,依此等。 例如:
<GCHeapAffinitizeMask enabled="1023"/>
值为 1023 0x3FF或 0011 1111 111b。 此过程使用 10 个处理器,从处理器 0 到处理器 9。
Example
以下示例指示应用程序使用服务器 GC 和 10 个堆/线程。 由于不希望这些堆与系统上运行的其他应用程序的堆重叠,因此请使用 GCHeapAffinitizeMask 指定进程应使用 CPU 0 到 9。
<configuration>
<runtime>
<gcServer enabled="true"/>
<GCHeapCount enabled="10"/>
<GCHeapAffinitizeMask enabled="1023"/>
</runtime>
</configuration>