Elemento <GCHeapAffinitizeMask>

Define a afinidade entre heaps de coleta de lixo e processadores individuais.

<configuração>
  <runtime>
    <GCHeapAffinitizeMask>

Syntax

<GCHeapAffinitizeMask
   enabled="nnnn"/>

Atributos e elementos

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

Atributos

Atributo Descrição
enabled Atributo obrigatório.

Especifica a afinidade entre heaps de coleta de lixo e processadores individuais.

atributo habilitado

Valor Descrição
nnnn Um valor decimal que forma uma máscara de bits definindo a afinidade entre heaps de coleta de lixo do servidor e processadores individuais.

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 GCHeapAffinitizeMask para controlar a afinidade entre heaps de coleta de lixo do servidor e processadores quando o número de heaps é limitado pelo elemento GCHeapCount.

GCHeapAffinitizeMask 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. O atributo enabled do elemento GCNoAffinitize deve ser false (seu valor padrão) para a configuração GCHeapAffinitizeMask a ser usada.

  • GCHeapCount, que limita o número de heaps usados pelo processo para a coleta de lixo do servidor. Por padrão, há um heap para cada processador.

nnnn é uma máscara de bit expressa como um valor decimal. O bit 0 de byte 0 representa o processador 0, o bit 1 do byte 0 representa o processador 1, e assim por diante. Por exemplo:

<GCHeapAffinitizeMask enabled="1023"/>

Um valor de 1023 é 0x3FF ou 0011 1111 1111b. O processo usa 10 processadores, do processador 0 ao processador 9.

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 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>

Confira também