Konfigurera .NET-skräpinsamling

För bra prestanda är det viktigt att konfigurera .NET-skräpinsamlingen korrekt för siloprocessen. Baserat på teamets resultat är den bästa kombinationen av inställningar gcServer=true och gcConcurrent=true. Du kan konfigurera dessa värden i C#-projektet (.csproj) eller en app.config fil. Mer information finns i Smak av skräpinsamling.

.NET Core och .NET 5+

Den här metoden stöds inte för SDK-liknande projekt som kompileras mot hela .NET Framework.

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

.NET Framework

SDK-liknande projekt som kompileras mot det fullständiga .NET Framework bör fortfarande använda det här konfigurationsformatet. Överväg ett exempel app.config XML-fil:

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

Detta är dock inte lika enkelt om en silo körs som del av en Azure Worker Role, vilket som standard använder workstation-GC. I ett relevant blogginlägg beskrivs hur du ställer in samma konfiguration för en Azure Worker-roll. Se Server garbage collection-läge i Azure.

Viktigt!

Server skräpinsamling är endast tillgänglig på datorer med flera processorer. Även om du konfigurerar skräpinsamling via programmets .csproj-fil eller skripten i det refererade blogginlägget får du därför inte fördelarna med gcServer=true om silon körs på en (virtuell) dator med en enda kärna. Mer information finns i GCSettings.IsServerGC-kommentarer.