指定要用于服务器垃圾回收的堆/线程数。
<配置>
<运行>
<GCHeapCount>
Syntax
<GCHeapCount
enabled="nn"/>
属性和元素
下列各节描述了特性、子元素和父元素。
特性
| Attribute | Description |
|---|---|
enabled |
必需属性。 指定要用于服务器垃圾回收的堆数。 实际堆数是指定的堆数的最小值,并且允许使用进程处理器数。 |
enabled 属性
| 价值 | Description |
|---|---|
nn |
要用于服务器 GC 的堆数。 |
子元素
没有。
父元素
| 元素 | Description |
|---|---|
configuration |
公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。 |
runtime |
包含有关程序集绑定和垃圾回收的信息。 |
注解
默认情况下,服务器 GC 线程与其各自的 CPU 进行硬关联,以便每个处理器有一个 GC 堆、一个服务器 GC 线程和一个后台服务器 GC 线程。 从 .NET Framework 4.6.2 开始,可以使用 GCHeapCount 元素来限制应用程序用于服务器 GC 的堆数。 限制用于服务器 GC 的堆数对于运行服务器应用程序的多个实例的系统尤其有用。
GCHeapCount 通常与其他两个标志一起使用:
GCNoAffinitize,用于控制服务器 GC 线程/堆是否与 CPU 关联。
GCHeapAffinitizeMask,用于控制 GC 线程/堆与 CPU 的关联。
如果 GCHeapCount 已设置并 GCNoAffinitize 禁用(其默认设置), 则 nn GC 线程/堆与第一个 nn 处理器之间存在相关性。 可以使用 GCHeapAffinitizeMask 元素来指定进程服务器 GC 堆使用的处理器。 否则,如果多个服务器进程在系统上运行,则其处理器使用情况将重叠。
如果 GCHeapCount 已设置并 GCNoAffinitize 启用,则垃圾回收器会限制用于服务器 GC 的处理器数,但不关联 GC 堆和处理器。
Example
以下示例指示应用程序使用服务器 GC 和 10 个堆/线程。 由于不希望这些堆与系统上运行的其他应用程序的堆重叠,因此可以使用 GCHeapAffinitizeMask 该进程指定进程应使用 CPU 0 到 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>