<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 通常与其他两个标志一起使用:
GCNoAffinitize,用于控制服务器 GC 线程/堆是否与 CPU 进行连接。
GCHeapAffinitizeMask,用于控制 GC 线程/堆与 CPU 的相关性。
如果设置了 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>