Freigeben über


Konfigurieren der .NET-Speicherbereinigung

Für eine gute Leistung ist es wichtig, die .NET Garbage Collection für den Siloprozess ordnungsgemäß zu konfigurieren. Basierend auf den Ergebnissen des Teams ist die beste Kombination von Einstellungen gcServer=true und gcConcurrent=true. Sie können diese Werte in Ihrem C#-Projekt (CSPROJ) oder einer app.config Datei konfigurieren. Weitere Informationen finden Sie unter "Aromen der Garbage Collection".

.NET Core und .NET 5+

Diese Methode wird für SDK-Projekte, die mit dem vollständigen .NET Framework kompiliert werden, nicht unterstützt.

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

.NET Framework (Englisch)

Projekte im SDK-Stil, die mit dem vollständigen .NET Framework kompiliert werden, sollten weiterhin diesen Konfigurationsstil verwenden. Betrachten Sie ein Beispiel app.config XML-Datei:

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

Dies ist jedoch nicht so einfach, wenn ein Silo als Teil einer Azure-Worker-Rolle ausgeführt wird, die standardmäßig Workstation GC verwendet. Ein relevanter Blogbeitrag beschreibt, wie die gleiche Konfiguration für eine Azure-Workerrolle festgelegt wird; siehe Server garbage collection mode in Azure.

Von Bedeutung

Die Server-Müllabfuhr ist nur auf Multiprozessorcomputern verfügbar. Selbst wenn Sie daher die Garbage Collection über die Csproj-Anwendungsdatei oder die Skripts im verwiesenen Blogbeitrag konfigurieren, erhalten Sie nicht die Vorteile von gcServer=true, wenn das Silo auf einem (virtuellen) Computer mit einem einzigen Kern ausgeführt wird. Weitere Informationen finden Sie in den Anmerkungen zu GCSettings.IsServerGC.