Elemento <GCHeapCount>

Especifica o número de heaps/threads a serem usados para a coleta de lixo do servidor.

<configuração>
  <runtime>
    <GCHeapCount>

Syntax

<GCHeapCount
   enabled="nn"/>

Atributos e elementos

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

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Especifica o número de heaps a serem usados para a coleta de lixo do servidor. O número real de heaps é o mínimo do número de heaps que você especifica e o número de processadores que seu processo pode usar.

atributo habilitado

Valor Descrição
nn O número de heaps a serem usados para a coleta de lixo do servidor.

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

Por padrão, os threads de coleta de lixo do servidor têm afinidade difícil com sua respectiva CPU para que haja um heap de coleta de lixo, um thread de coleta de lixo do servidor e um thread de coleta de lixo do servidor em segundo plano para cada processador. Começando com .NET Framework 4.6.2, você pode usar o elemento GCHeapCount para limitar o número de heaps usados pelo aplicativo para a coleta de lixo do servidor. Limitar o número de heaps usados para a coleta de lixo do servidor é particularmente útil para sistemas que executam várias instâncias de um aplicativo de servidor.

GCHeapCount normalmente é usado junto com dois outros sinalizadores:

  • GCNoAffinitize, que controla se os threads/heaps de coleta de lixo do servidor têm afinidade com CPUs.

  • GCHeapAffinitizeMask, que controla a afinidade de threads/heaps de coleta de lixo com CPUs.

Se GCHeapCount estiver definido e GCNoAffinitize estiver desabilitado (sua configuração padrão), haverá uma afinidade entre os threads/heaps de coleta de lixo do nn e os primeiros processadores nn. Você pode usar o elemento GCHeapAffinitizeMask para especificar quais processadores são usados pelos heaps de coleta de lixo do servidor do processo. Caso contrário, se vários processos de servidor estiverem em execução em um sistema, seu uso do processador será sobreposto.

Se GCHeapCount estiver definido e GCNoAffinitize estiver habilitado, o coletor de lixo limitará o número de processadores usados para a coleta de lixo do servidor, mas não afinizará heaps e processadores da coleta de lixo.

Exemplo

O exemplo a seguir indica que um aplicativo usa a coleta de lixo do servidor com 10 heaps/threads. Como você não deseja que esses heaps se sobreponham a heaps de outros aplicativos em execução no sistema, use o GCHeapAffinitizeMask para especificar que o processo deve usar CPUs de 0 a 9.

<configuration>
   <runtime>
      <gcServer enabled="true"/>
      <GCHeapCount enabled="10"/>
      <GCHeapAffinitizeMask enabled="1023"/>
   </runtime>
</configuration>

O exemplo a seguir não afiniza threads da coleta de lixo do servidor e limita o número de heaps/threads da coleta de lixo para 10.

<configuration>
   <runtime>
      <gcServer enabled="true"/>
      <GCHeapCount enabled="10"/>
      <GCNoAffinitize enabled="true"/>
   </runtime>
</configuration>

Confira também