指定 PerfCounter.dll 是否使用 .NET Framework 版本 1.1 应用程序中的 CategoryOptions 注册表设置来确定是从特定于类别的共享内存还是全局内存加载性能计数器数据。
<配置>
<运行时>
<forcePerformanceCounterUniqueSharedMemoryReads>
Syntax
<forcePerformanceCounterUniqueSharedMemoryReads
enabled="true|false"/>
特性和元素
下列各节描述了特性、子元素和父元素。
特性
| Attribute | Description |
|---|---|
enabled |
必需属性。 指示 PerfCounter.dll 是否使用 CategoryOptions 注册表设置来确定是否从特定于类别的共享内存或全局内存加载性能计数器数据。 |
enabled Attribute
| 价值 | Description |
|---|---|
false |
PerfCounter.dll 不使用 CategoryOptions 注册表设置这是默认设置。 |
true |
PerfCounter.dll 确实使用 CategoryOptions 注册表设置。 |
子元素
没有。
父元素
| 元素 | Description |
|---|---|
configuration |
公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。 |
runtime |
包含有关程序集绑定和垃圾回收的信息。 |
注解
在 .NET Framework 4 之前的 .NET Framework 版本中,加载的 PerfCounter.dll 版本对应于进程中加载的运行时。 如果计算机同时安装了 .NET Framework 版本 1.1 和 .NET Framework 2.0,.NET Framework 1.1 应用程序将加载 .NET Framework 1.1 版本的 PerfCounter.dll。 从 .NET Framework 4 开始,将加载最新安装的 PerfCounter.dll 版本。 这意味着,如果计算机上安装 .NET Framework 4,.NET Framework 1.1 应用程序将加载 .NET Framework 4 版本的 PerfCounter.dll。
从 .NET Framework 4 开始,使用性能计数器时,PerfCounter.dll 检查每个提供程序的 CategoryOptions 注册表项,以确定它是否应从特定于类别的共享内存或全局共享内存中读取。 .NET Framework 1.1 PerfCounter.dll 不会读取该注册表项,因为它不知道特定于类别的共享内存;它始终从全局共享内存中读取。
为了向后兼容,.NET Framework 4 PerfCounter.dll 在 .NET Framework 1.1 应用程序中运行时不会检查 CategoryOptions 注册表项。 它只是使用全局共享内存,就像 .NET Framework 1.1 PerfCounter.dll一样。 但是,可以通过启用 <forcePerformanceCounterUniqueSharedMemoryReads> 元素来指示 .NET Framework 4 PerfCounter.dll 检查注册表设置。
注释
启用 <forcePerformanceCounterUniqueSharedMemoryReads> 该元素不能保证将使用特定于类别的共享内存。 设置为 true 仅导致 PerfCounter.dll 引用 CategoryOptions 注册表设置。 CategoryOptions 的默认设置是使用特定于类别的共享内存;但是,可以更改 CategoryOptions 以指示应使用全局共享内存。
包含 CategoryOptions 设置的注册表项 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<categoryName>\Performance。 默认情况下,CategoryOptions 设置为 3,指示 PerfCounter.dll 使用特定于类别的共享内存。 如果 CategoryOptions 设置为 0,PerfCounter.dll 使用全局共享内存。 仅当所创建的实例的名称与重复使用的实例相同时,才会重复使用实例数据。 所有版本都可以写入类别。 如果 CategoryOptions 设置为 1,则使用全局共享内存,但如果类别名称与重用的类别长度相同,则可以重复使用实例数据。
设置 0 和 1 可能会导致内存泄漏,并填满性能计数器内存。
Example
以下示例演示如何指定 PerfCounter.dll 应引用 CategoryOptions 注册表项,以确定它是否应使用特定于类别的共享内存。
<configuration>
<runtime>
<forcePerformanceCounterUniqueSharedMemoryReads enabled="true"/>
</runtime>
</configuration>