<forcePerformanceCounterUniqueSharedMemoryReads> 元素

指定 PerfCounter.dll 是否使用 .NET Framework 版本 1.1 应用程序中的 CategoryOptions 注册表设置,以确定是否加载来自特定于类别的共享内存或全局内存的性能计数器数据。

configuration
  runtime
    <forcePerformanceCounterUniqueSharedMemoryReads>

语法

<forcePerformanceCounterUniqueSharedMemoryReads
enabled="true|false"/>  

特性和元素

下列各节描述了特性、子元素和父元素。

特性

属性 描述
enabled 必需的特性。

指示 PerfCounter.dll 是否使用 CategoryOptions 注册表设置来确定是要从特定于类别的共享内存还是从全局内存加载性能计数器数据。

enabled 特性

说明
false PerfCounter.dll 不使用 CategoryOptions 注册表设置。这是默认设置。
true PerfCounter.dll 使用 CategoryOptions 注册表设置。

子元素

无。

父元素

元素 说明
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 可能导致内存泄漏和填满性能计数器内存。

示例

以下示例演示如何指定 PerfCounter.dll 应引用 CategoryOptions 注册表项来确定它是否要使用特定于类别的共享内存。

<configuration>  
  <runtime>  
    <forcePerformanceCounterUniqueSharedMemoryReads enabled="true"/>  
  </runtime>  
</configuration>  

另请参阅