Elemento <forcePerformanceCounterUniqueSharedMemoryReads>

Especifica se o PerfCounter.dll usa a configuração de registro CategoryOptions em um aplicativo do .NET Framework versão 1.1 para determinar se é preciso carregar dados do contador de desempenho da memória global ou da memória compartilhada especifica da categoria.

<configuration>
  <runtime>
    <forcePerformanceCounterUniqueSharedMemoryReads>

Syntax

<forcePerformanceCounterUniqueSharedMemoryReads
enabled="true|false"/>  

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Indica se o PerfCounter.dll usa a configuração de registro CategoryOptions para determinar se é preciso carregar dados do contador de desempenho da memória global ou da memória compartilhada especifica da categoria.

Atributo habilitado

Valor Descrição
false O PerfCounter.dll não usa a configuração do registro CategoryOptions. Esse é o padrão.
true O PerfCounter.dll usa a configuração do registro CategoryOptions.

Elementos filho

Nenhum.

Elementos pai

Elemento Descrição
configuration O elemento raiz em cada arquivo de configuração usado pelos aplicativos do Common Language Runtime e .NET Framework.
runtime Contém informações sobre associação do assembly e coleta de lixo.

Comentários

Nas versões do .NET Framework antes do .NET Framework 4, a versão do PerfCounter.dll que foi carregada correspondia ao runtime que foi carregado no processo. Se um computador tivesse o .NET Framework versão 1.1 e o .NET Framework 2.0 instalado, um aplicativo .NET Framework 1.1 carregaria a versão 1.1 do .NET Framework do PerfCounter.dll. A partir do .NET Framework 4, a versão mais recente instalada do PerfCounter.dll é carregada. Isso significa que um aplicativo .NET Framework 1.1 carregará o .NET Framework versão 4 do PerfCounter.dll se o .NET Framework 4 estiver instalado no computador.

A partir do .NET Framework 4, ao consumir contadores de desempenho, o PerfCounter.dll verifica a entrada do registro CategoryOptions para cada provedor para determinar se ele deve ser lido na memória compartilhada específica da categoria ou na memória compartilhada global. O PerfCounter.dll do .NET Framework 1.1 não lê essa entrada do registro, pois não está ciente da memória compartilhada específica da categoria, em vez disso, sempre lê na memória compartilhada global.

Para compatibilidade com versões anteriores, o PerfCounter.dll do .NET Framework 4 não verifica a entrada do registro CategoryOptions ao ser executado em um aplicativo .NET Framework 1.1. Ele simplesmente usa memória compartilhada global, assim como o PerfCounter.dll do .NET Framework 1.1. No entanto, você pode instruir o PerfCounter.dll do .NET Framework 4 a verificar a configuração do Registro habilitando o elemento <forcePerformanceCounterUniqueSharedMemoryReads>.

Observação

Habilitar o elemento <forcePerformanceCounterUniqueSharedMemoryReads> não garante que a memória compartilhada específica da categoria será usada. A configuração habilitada para true somente faz com que o PerfCounter.dll referencie a configuração do registro CategoryOptions. A configuração padrão para CategoryOptions é usar a memória compartilhada específica da categoria. No entanto, você pode alterar CategoryOptions para indicar que a memória compartilhada global deve ser usada.

A chave do Registro que contém a configuração CategoryOptions é HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<categoryName>\Performance. Por padrão, CategoryOptions é definido como 3, o que instrui o PerfCounter.dll a usar memória compartilhada específica da categoria. Se CategoryOptions for definido como 0, o PerfCounter.dll usará a memória compartilhada global. Os dados da instância serão reutilizados somente se o nome da instância que está sendo criada for idêntico à instância que está sendo reutilizada. Todas as versões poderão gravar na categoria. Se CategoryOptions for definido como 1, a memória compartilhada global será usada, mas os dados da instância poderão ser reutilizados se o nome da categoria tiver o mesmo tamanho que a categoria que está sendo reutilizada.

As configurações 0 e 1 podem levar a vazamentos de memória e ao preenchimento da memória do contador de desempenho.

Exemplo

O exemplo a seguir mostra como especificar que o PerfCounter.dll deve fazer referência à entrada do registro CategoryOptions para determinar se ela deve usar memória compartilhada específica da categoria.

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

Confira também