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