Condividi tramite


Configurare Garbage Collection .NET

Per ottenere prestazioni ottimali, è importante configurare in modo corretto Garbage Collection .NET per il processo del silo. La combinazione migliore delle impostazioni, in base ai risultati del team, è impostare gcServer=true e gcConcurrent=true. È possibile configurare questi valori nel progetto C# (con estensione csproj) o in un file app.config. Per altre informazioni, vedere Versioni di Garbage Collection.

.NET Core e .NET 5+

Questo metodo non è supportato con la compilazione di progetti di stile SDK rispetto a .NET Framework completo

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

.NET Framework

I progetti di stile SDK compilati con .NET Framework completo devono comunque usare questo stile di configurazione. Si consideri un file XML app.config di esempio:

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

Tuttavia, questa operazione non è altrettanto semplice da eseguire se un silo viene eseguito come parte di un ruolo di lavoro di Azure, che, per impostazione predefinita, è configurato per l'uso di workstation GC. È disponibile un post di blog pertinente che descrive come impostare la stessa configurazione per un ruolo di lavoro di Azure. Vedere Modalità Garbage Collection del server in Azure.

Importante

A livello di server, il gestore Garbage Collection è disponibile solo nei computer multiprocessore. Pertanto, anche se si configura Garbage Collection sia tramite il file con .csproj dell'applicazione sia tramite gli script nel post di blog di riferimento, se il silo è in esecuzione in una macchina (virtuale) a core singolo, non si potranno ottenere i vantaggi di gcServer=true. Per altre informazioni, vedere Commenti di GCSettings.IsServerGC.