Compartilhar via


Configurar a coleta de lixo do .NET

Para um bom desempenho, é importante configurar a coleta de lixo do .NET para o processo de silo da maneira correta. A melhor combinação de configurações com base nas descobertas da equipe é definir gcServer=true e gcConcurrent=true. Você pode configurar esses valores no projeto C# (.csproj) ou um app.config. Para obter mais informações, consulte Variantes da coleta de lixo.

.NET Core e .NET 5+

Não há suporte para esse método com projetos de estilo do SDK compilados em relação ao .NET Framework completo

<PropertyGroup>
    <ServerGarbageCollection>true</ServerGarbageCollection>
    <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
</PropertyGroup>

.NET Framework

Os projetos de estilo do SDK que são compilados no .NET Framework completo ainda devem usar esse estilo de configuração, considere um arquivo XML app.config de exemplo:

<configuration>
    <runtime>
        <gcServer enabled="true"/>
        <gcConcurrent enabled="true"/>
    </runtime>
</configuration>

No entanto, isso não será tão fácil de fazer se um silo for executado como parte de uma Função de Trabalho do Azure, que, por padrão, é configurada para usar a coleta de lixo da estação de trabalho. Há uma postagem relevante no blog que discute como definir a mesma configuração para uma Função de Trabalho do Azure, consulte Modo de coleta de lixo do Servidor no Azure.

Importante

A coleta de lixo do servidor está disponível somente em computadores multiprocessadores. Portanto, mesmo que você configure a coleta de lixo por meio do arquivo .csproj do aplicativo ou por meio dos scripts na postagem de blog referida, se o silo estiver em execução em um computador (virtual) com um único núcleo, você não obterá os benefícios de gcServer=true. Para obter mais informações, consulte Observações de GCSettings.IsServerGC.