Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Esta página contém informações sobre as configurações do GC (coletor de lixo) do runtime do .NET. Se você estiver tentando alcançar desempenho máximo com um aplicativo em execução, considere usar essas configurações. No entanto, os padrões fornecem um desempenho ideal para a maioria dos aplicativos em situações típicas.
As configurações são organizadas em grupos nesta página. As configurações dentro de cada grupo normalmente são usadas em conjunto umas com as outras para obter um resultado específico.
Observação
DOTNET_
em vez de COMPlus_
. No entanto, o prefixo COMPlus_
continuará funcionando. Se você estiver usando uma versão anterior do runtime do .NET, ainda deverá usar o prefixo COMPlus_
, por exemplo, COMPlus_gcServer
.Para outras versões do runtime do .NET, há maneiras diferentes de especificar os valores de configuração. A tabela a seguir mostra um resumo.
Local da configuração | Versões do .NET a que este local se aplica | Formatos | Como ele é interpretado |
---|---|---|---|
Arquivo runtimeconfig.json file/ runtimeconfig.template.json |
.NET (Core) | n | n é interpretado como um valor decimal. |
Variável de ambiente | .NET Framework, .NET (Core) | 0xn ou n | n é interpretado como um valor hexadecimal em qualquer formato |
app.config file | .NET Framework | 0xn | n é interpretado como um valor hexadecimal1 |
1 Você pode especificar um valor sem o prefixo 0x
para a configuração de um arquivo app.config, mas isso não é recomendado. No .NET Framework 4.8 (e versões posteriores), devido a um bug, um valor especificado sem o prefixo 0x
é interpretado como hexadecimal, mas nas versões anteriores do .NET Framework, ele é interpretado como decimal. Para evitar a necessidade de alterar a configuração, use o prefixo 0x
ao especificar um valor no arquivo app.config.
Por exemplo, a fim de especificar 12 heaps para GCHeapCount
para um aplicativo do .NET Framework chamado A.exe, adicione o XML a seguir ao arquivo A.exe.config.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
...
<runtime>
<gcServer enabled="true"/>
<GCHeapCount>0xc</GCHeapCount>
</runtime>
</configuration>
Você pode usar variáveis de ambiente tanto no .NET (Core) quanto no .NET Framework.
No Windows, usando o .NET 6 ou uma versão posterior:
SET DOTNET_gcServer=1
SET DOTNET_GCHeapCount=c
No Windows, usando o .NET 5 ou versão anterior:
SET COMPlus_gcServer=1
SET COMPlus_GCHeapCount=c
Em outros sistemas operacionais:
Para .NET 6 ou versões posteriores:
export DOTNET_gcServer=1
export DOTNET_GCHeapCount=c
Para o .NET 5 e versões anteriores:
export COMPlus_gcServer=1
export COMPlus_GCHeapCount=c
Se não estiver usando o .NET Framework, também defina o valor no arquivo runtimeconfig.json ou runtimeconfig.template.json.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
As duas principais variantes de coleta de lixo são o GC da estação de trabalho e o GC do servidor. Para obter mais informações sobre as diferenças entre os dois, confira Coleta de lixo da estação de trabalho e do servidor.
As subvariantes da coleta de lixo são o GC em segundo plano e o GC não simultâneo.
Use as seguintes configurações para selecionar as variantes de coleta de lixo:
false
.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.Server |
false – Estação de trabalhotrue – Servidor |
.NET Core 1.0 |
Propriedade do MSBuild | ServerGarbageCollection |
false – Estação de trabalhotrue – Servidor |
.NET Core 1.0 |
Variável de ambiente | COMPlus_gcServer |
0 – Estação de trabalho1 – Servidor |
.NET Core 1.0 |
Variável de ambiente | DOTNET_gcServer |
0 – Estação de trabalho1 – Servidor |
.NET 6 |
app.config para .NET Framework | GCServer | false – Estação de trabalhotrue – Servidor |
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.Server": true
}
}
Arquivo de projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
</Project>
true
.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.Concurrent |
true – GC em segundo planofalse – GC não simultâneo |
.NET Core 1.0 |
Propriedade do MSBuild | ConcurrentGarbageCollection |
true – GC em segundo planofalse – GC não simultâneo |
.NET Core 1.0 |
Variável de ambiente | COMPlus_gcConcurrent |
1 – GC em segundo plano0 – GC não simultâneo |
.NET Core 1.0 |
Variável de ambiente | DOTNET_gcConcurrent |
1 – GC em segundo plano0 – GC não simultâneo |
.NET 6 |
app.config para .NET Framework | gcConcurrent | true – GC em segundo planofalse – GC não simultâneo |
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Concurrent": false
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.Concurrent": false
}
}
Arquivo de projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
</Project>
Use as seguintes configurações para gerenciar a memória do coletor de lixo e o uso do processador:
Para obter mais informações sobre algumas dessas configurações, confira a entrada de blog Meio termo entre o GC da estação de trabalho e do servidor.
n
heaps/threads do GC com os n
primeiros processadores. (Use as configurações de máscara de criar afinidade ou intervalos de criar afinidade a fim de especificar exatamente para quais processadores criar afinidade.)Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapCount |
Valor decimal | .NET Core 3.0 |
Variável de ambiente | COMPlus_GCHeapCount |
Valor hexadecimal | .NET Core 3.0 |
Variável de ambiente | DOTNET_GCHeapCount |
Valor hexadecimal | .NET 6 |
app.config para .NET Framework | GCHeapCount | Valor decimal | .NET Framework 4.6.2 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapCount": 16
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.HeapCount": 16
}
}
Dica
Se você estiver definindo a opção em runtimeconfig.json, especifique um valor decimal. Se você estiver definindo a opção como uma variável de ambiente, especifique um valor hexadecimal. Por exemplo, para estabelecer o limite de 16 heaps, os valores a serem preenchidos seriam 16 no arquivo JSON e 0x10 ou 10 na variável de ambiente.
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapAffinitizeMask |
Valor decimal | .NET Core 3.0 |
Variável de ambiente | COMPlus_GCHeapAffinitizeMask |
Valor hexadecimal | .NET Core 3.0 |
Variável de ambiente | DOTNET_GCHeapAffinitizeMask |
Valor hexadecimal | .NET 6 |
app.config para .NET Framework | GCHeapAffinitizeMask | Valor decimal | .NET Framework 4.6.2 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapAffinitizeRanges |
Lista separada por vírgulas de números de processadores ou intervalos de números de processadores. Exemplo do Unix: "1-10,12,50-52,70" Exemplo do Windows: “0:1-10,0:12,1:50-52,1:7” |
.NET Core 3.0 |
Variável de ambiente | COMPlus_GCHeapAffinitizeRanges |
Lista separada por vírgulas de números de processadores ou intervalos de números de processadores. Exemplo do Unix: "1-10,12,50-52,70" Exemplo do Windows: “0:1-10,0:12,1:50-52,1:7” |
.NET Core 3.0 |
Variável de ambiente | DOTNET_GCHeapAffinitizeRanges |
Lista separada por vírgulas de números de processadores ou intervalos de números de processadores. Exemplo do Unix: "1-10,12,50-52,70" Exemplo do Windows: “0:1-10,0:12,1:50-52,1:7” |
.NET 6 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:7"
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:7"
}
}
Configura se o coletor de lixo usa grupos de CPU ou não.
Quando um computador Windows de 64 bits tem vários grupos de CPU, ou seja, há mais de 64 processadores, a permissão desse elemento estende a coleta de lixo para todos os grupos de CPU. O coletor de lixo usa todos os núcleos para criar e equilibrar heaps.
Observação
Esse é um conceito somente do Windows. Nas versões mais antigas do Windows, o Windows limitava um processo a um grupo de CPU. Assim, o GC usava apenas um grupo de CPU, a menos que você tenha usado essa configuração para habilitar vários grupos de CPU. Essa limitação do sistema operacional foi eliminada no Windows 11 e no Server 2022. Além disso, a partir do .NET 7, por padrão, o GC usa todos os grupos de CPU ao ser executado no Windows 11 ou no Server 2022.
Aplica-se à coleta de lixo do servidor, somente em sistemas operacionais Windows de 64 bits.
Padrão: o GC não se estende a todos os grupos de CPU. Isso é equivalente a definir o valor como 0
.
Para obter mais informações, confira Como melhorar a configuração da CPU para o GC em computadores com > 64 CPUs no blog da Maoni Stephens.
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.CpuGroup |
false -desabilitadotrue – Habilitado |
.NET 5 |
Variável de ambiente | COMPlus_GCCpuGroup |
0 -desabilitado1 – Habilitado |
.NET Core 1.0 |
Variável de ambiente | DOTNET_GCCpuGroup |
0 -desabilitado1 – Habilitado |
.NET 6 |
app.config para .NET Framework | GCCpuGroup | false -desabilitadotrue – Habilitado |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Observação
Para configurar o CLR (Common Language Runtime) a fim de também distribuir threads do pool de threads para todos os grupos de CPU, habilite a opção do elemento Thread_UseAllCpuGroups. Para aplicativos do .NET Core, você pode habilitar essa opção definindo o valor da variável de ambiente DOTNET_Thread_UseAllCpuGroups
como 1
.
false
.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.NoAffinitize |
false – Criar afinidadetrue – Não criar afinidade |
.NET Core 3.0 |
Variável de ambiente | COMPlus_GCNoAffinitize |
0 – Criar afinidade1 – Não criar afinidade |
.NET Core 3.0 |
Variável de ambiente | DOTNET_GCNoAffinitize |
0 – Criar afinidade1 – Não criar afinidade |
.NET 6 |
app.config para .NET Framework | GCNoAffinitize | false – Criar afinidadetrue – Não criar afinidade |
.NET Framework 4.6.2 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.NoAffinitize": true
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.NoAffinitize": true
}
}
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimit |
Valor decimal | .NET Core 3.0 |
Variável de ambiente | COMPlus_GCHeapHardLimit |
Valor hexadecimal | .NET Core 3.0 |
Variável de ambiente | DOTNET_GCHeapHardLimit |
Valor hexadecimal | .NET 6 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
Dica
Se você estiver definindo a opção em runtimeconfig.json, especifique um valor decimal. Se você estiver definindo a opção como uma variável de ambiente, especifique um valor hexadecimal. Por exemplo, para especificar um limite rígido de heap de 200 mebibytes (MiB), os valores seriam 209715200 para o arquivo JSON e 0xC800000 ou C800000 para a variável de ambiente.
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitPercent |
Valor decimal | .NET Core 3.0 |
Variável de ambiente | COMPlus_GCHeapHardLimitPercent |
Valor hexadecimal | .NET Core 3.0 |
Variável de ambiente | DOTNET_GCHeapHardLimitPercent |
Valor hexadecimal | .NET 6 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
Dica
Se você estiver definindo a opção em runtimeconfig.json, especifique um valor decimal. Se você estiver definindo a opção como uma variável de ambiente, especifique um valor hexadecimal. Por exemplo, para limitar o uso de heap em 30%, os valores a serem preenchidos seriam 30 no arquivo JSON e 0x1E ou 1E na variável de ambiente.
Você pode especificar o limite rígido de heap do GC por heap de objeto. Os diferentes heaps existentes são o LOH (heap de objetos grandes), o SOH (heap de objetos pequenos) e o POH (heap de objetos fixados).
DOTNET_GCHeapHardLimitSOH
, DOTNET_GCHeapHardLimitLOH
ou DOTNET_GCHeapHardLimitPOH
, você também deverá especificar um valor para DOTNET_GCHeapHardLimitSOH
e DOTNET_GCHeapHardLimitLOH
. Se não o fizer, o runtime não será inicializado.DOTNET_GCHeapHardLimitPOH
é 0. DOTNET_GCHeapHardLimitSOH
e DOTNET_GCHeapHardLimitLOH
não têm valores padrão.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitSOH |
Valor decimal | .NET 5 |
Variável de ambiente | COMPlus_GCHeapHardLimitSOH |
Valor hexadecimal | .NET 5 |
Variável de ambiente | DOTNET_GCHeapHardLimitSOH |
Valor hexadecimal | .NET 6 |
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitLOH |
Valor decimal | .NET 5 |
Variável de ambiente | COMPlus_GCHeapHardLimitLOH |
Valor hexadecimal | .NET 5 |
Variável de ambiente | DOTNET_GCHeapHardLimitLOH |
Valor hexadecimal | .NET 6 |
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitPOH |
Valor decimal | .NET 5 |
Variável de ambiente | COMPlus_GCHeapHardLimitPOH |
Valor hexadecimal | .NET 5 |
Variável de ambiente | DOTNET_GCHeapHardLimitPOH |
Valor hexadecimal | .NET 6 |
Essas definições de configuração não têm propriedades específicas do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Dica
Se você estiver definindo a opção em runtimeconfig.json, especifique um valor decimal. Se você estiver definindo a opção como uma variável de ambiente, especifique um valor hexadecimal. Por exemplo, para especificar um limite rígido de heap de 200 mebibytes (MiB), os valores seriam 209715200 para o arquivo JSON e 0xC800000 ou C800000 para a variável de ambiente.
Você pode especificar o limite rígido de heap do GC por heap de objeto. Os diferentes heaps existentes são o LOH (heap de objetos grandes), o SOH (heap de objetos pequenos) e o POH (heap de objetos fixados).
DOTNET_GCHeapHardLimitSOHPercent
, DOTNET_GCHeapHardLimitLOHPercent
ou DOTNET_GCHeapHardLimitPOHPercent
, você também deverá especificar um valor para DOTNET_GCHeapHardLimitSOHPercent
e DOTNET_GCHeapHardLimitLOHPercent
. Se não o fizer, o runtime não será inicializado.DOTNET_GCHeapHardLimitSOH
, DOTNET_GCHeapHardLimitLOH
e DOTNET_GCHeapHardLimitPOH
são especificados.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitSOHPercent |
Valor decimal | .NET 5 |
Variável de ambiente | COMPlus_GCHeapHardLimitSOHPercent |
Valor hexadecimal | .NET 5 |
Variável de ambiente | DOTNET_GCHeapHardLimitSOHPercent |
Valor hexadecimal | .NET 6 |
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitLOHPercent |
Valor decimal | .NET 5 |
Variável de ambiente | COMPlus_GCHeapHardLimitLOHPercent |
Valor hexadecimal | .NET 5 |
Variável de ambiente | DOTNET_GCHeapHardLimitLOHPercent |
Valor hexadecimal | .NET 6 |
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitPOHPercent |
Valor decimal | .NET 5 |
Variável de ambiente | COMPlus_GCHeapHardLimitPOHPercent |
Valor hexadecimal | .NET 5 |
Variável de ambiente | DOTNET_GCHeapHardLimitPOHPercent |
Valor hexadecimal | .NET 6 |
Essas definições de configuração não têm propriedades específicas do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Dica
Se você estiver definindo a opção em runtimeconfig.json, especifique um valor decimal. Se você estiver definindo a opção como uma variável de ambiente, especifique um valor hexadecimal. Por exemplo, para limitar o uso de heap em 30%, os valores a serem preenchidos seriam 30 no arquivo JSON e 0x1E ou 1E na variável de ambiente.
A carga de memória é indicada pelo percentual de memória física em uso. Por padrão, quando a carga de memória física atinge 90%, a coleta de lixo se torna mais agressiva realizando coletas de lixo completas e compactadas para evitar a paginação. Quando a carga de memória está abaixo de 90%, ao realizar coletas de lixo completas o GC favorece as coletas em segundo plano, que têm pausas mais curtas, mas não reduzem muito o tamanho total do heap. Em computadores com uma quantidade significativa de memória (80 GB ou mais), o limite de carga padrão fica entre 90% e 97%.
O limite de carga de memória alta pode ser ajustado pela variável de ambiente DOTNET_GCHighMemPercent
ou pela configuração JSON System.GC.HighMemoryPercent
. Considere ajustar o limite se você quiser controlar o tamanho do heap. Por exemplo, para o processo dominante em um computador com 64 GB de memória, é razoável que o GC comece a reagir quando há 10% de memória disponível. Mas para processos menores, por exemplo, um processo que consome apenas 1 GB de memória, o GC pode ser executado confortavelmente com menos de 10% de memória disponível. Para esses processos menores, considere definir um limite mais alto. Por outro lado, se você quiser que processos maiores tenham tamanhos de heap menores (mesmo quando há muita memória física disponível), a redução desse limite é uma forma eficaz de fazer com que o GC reaja mais cedo a fim de compactar o heap e diminuí-lo.
Observação
Para processos em execução em um contêiner, o GC considera a memória física com base nos limites do contêiner.
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.HighMemoryPercent |
Valor decimal | .NET 5 |
Variável de ambiente | COMPlus_GCHighMemPercent |
Valor hexadecimal | .NET Core 3.0 .NET Framework 4.7.2 |
Variável de ambiente | DOTNET_GCHighMemPercent |
Valor hexadecimal | .NET 6 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Dica
Se você estiver definindo a opção em runtimeconfig.json, especifique um valor decimal. Se você estiver definindo a opção como uma variável de ambiente, especifique um valor hexadecimal. Por exemplo, para definir o limite de memória alto como 75%, os valores preenchidos seriam 75 no arquivo JSON e 0x4B ou 4B na variável de ambiente.
false
.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.RetainVM |
false – Liberar para o SOtrue – Colocar em espera |
.NET Core 1.0 |
Propriedade do MSBuild | RetainVMGarbageCollection |
false – Liberar para o SOtrue – Colocar em espera |
.NET Core 1.0 |
Variável de ambiente | COMPlus_GCRetainVM |
0 – Liberar para o SO1 – Colocar em espera |
.NET Core 1.0 |
Variável de ambiente | DOTNET_GCRetainVM |
0 – Liberar para o SO1 – Colocar em espera |
.NET 6 |
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.RetainVM": true
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.RetainVM": true
}
}
Arquivo de projeto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
</Project>
0
.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | N/D | N/D | N/D |
Variável de ambiente | COMPlus_GCLargePages |
0 -desabilitado1 – Habilitado |
.NET Core 3.0 |
Variável de ambiente | DOTNET_GCLargePages |
0 -desabilitado1 – Habilitado |
.NET 6 |
1
.Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | N/D | N/D | N/D |
Variável de ambiente | COMPlus_gcAllowVeryLargeObjects |
1 – Habilitado0 -desabilitado |
.NET Core 1.0 |
Variável de ambiente | DOTNET_gcAllowVeryLargeObjects |
1 – Habilitado0 -desabilitado |
.NET 6 |
app.config para .NET Framework | gcAllowVeryLargeObjects | 1 – Habilitado0 -desabilitado |
.NET Framework 4.5 |
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.LOHThreshold |
Valor decimal | .NET Core 1.0 |
Variável de ambiente | COMPlus_GCLOHThreshold |
Valor hexadecimal | .NET Core 1.0 |
Variável de ambiente | DOTNET_GCLOHThreshold |
Valor hexadecimal | .NET 6 |
app.config para .NET Framework | GCLOHThreshold | Valor decimal | .NET Framework 4.8 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Arquivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
}
Arquivo runtimeconfig.template.json:
{
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
Dica
Se você estiver definindo a opção em runtimeconfig.json, especifique um valor decimal. Se você estiver definindo a opção como uma variável de ambiente, especifique um valor hexadecimal. Por exemplo, para definir um tamanho limite de 120.000 bytes, os valores preenchidos seriam 120.000 no arquivo JSON e 0x1D4C0 ou 1D4C0 na variável de ambiente.
Para usar um coletor de lixo autônomo em vez da implementação padrão do GC, você pode especificar o caminho (no .NET 9 e versões posteriores) ou o nome de uma biblioteca nativa do GC.
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.Path |
string_path | .NET 9 |
Variável de ambiente | DOTNET_GCPath |
string_path | .NET 9 |
Especifica o nome de uma biblioteca nativa do GC que o runtime carrega no lugar da implementação padrão do GC. O comportamento foi alterado no .NET 9 com a introdução da configuração Path .
No .NET 8 e versões anteriores:
No .NET 9 e versões posteriores, esse valor especifica apenas um nome de arquivo (caminhos não são permitidos):
Main
aplicativo.Essa definição de configuração será ignorada se a configuração do caminho for especificada.
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.Name |
string_name | .NET 7 |
Variável de ambiente | COMPlus_GCName |
string_name | .NET Core 2.0 |
Variável de ambiente | DOTNET_GCName |
string_name | .NET 6 |
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
runtimeconfig.json | System.GC.ConserveMemory |
0 - 9 |
.NET 6 |
Variável de ambiente | COMPlus_GCConserveMemory |
0 -9 |
.NET Framework 4.8 |
Variável de ambiente | DOTNET_GCConserveMemory |
0 -9 |
.NET 6 |
app.config para .NET Framework | GCConserveMemory | 0 -9 |
.NET Framework 4.8 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Exemplo de arquivo app.config:
<configuration>
<runtime>
<GCConserveMemory enabled="5"/>
</runtime>
</configuration>
Dica
Experimente com diferentes números a fim de ver qual valor funciona melhor para você. Comece com um valor entre 5 e 7.
Nome da configuração | Valores | Versão introduzida | |
---|---|---|---|
Variável de ambiente | DOTNET_GCDynamicAdaptationMode |
1 – Habilitado0 -desabilitado |
.NET 8 |
Propriedade do MSBuild | GarbageCollectionAdaptationMode |
1 - habilitado0 -desabilitado |
.NET 8 |
runtimeconfig.json | System.GC.DynamicAdaptationMode |
1 - habilitado0 -desabilitado |
.NET 8 |
Essa definição de configuração não tem uma propriedade específica do MSBuild. No entanto, você pode adicionar um item RuntimeHostConfigurationOption
do MSBuild. Use o nome da configuração runtimeconfig.json como o valor do atributo Include
. Para ver um exemplo, confira Propriedades do MSBuild.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agora