Configurer le garbage collection .NET
Pour de bonnes performances, il est important de configurer de façon correcte le garbage collection .NET pour le processus de silo. La meilleure combinaison de paramètres en fonction des résultats de l’équipe consiste à définir gcServer=true
et gcConcurrent=true
. Vous pouvez configurer ces valeurs dans le projet C# (.csproj) ou un app.config. Pour plus d’informations, consultez Versions du garbage collection.
.NET Core et .NET 5+
Cette méthode n’est pas prise en charge avec les projets de style SDK compilés sur le .NET Framework complet
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
</PropertyGroup>
.NET Framework
Les projets de style SDK compilés sur le .NET Framework complet doivent toujours utiliser ce style de configuration. Prenez en compte un exemple de fichier XML app.config :
<configuration>
<runtime>
<gcServer enabled="true"/>
<gcConcurrent enabled="true"/>
</runtime>
</configuration>
Toutefois, cela n’est pas aussi facile à faire si un silo s’exécute dans le cadre d’un rôle de travail Azure, qui, par défaut, est configuré pour utiliser le garbage collector pour station de travail. Il existe un billet de blog pertinent qui explique comment définir la même configuration pour un rôle de travail Azure. Consultez Mode de garbage collection de serveur dans Azure.
Important
Le garbage collection de serveur est disponible uniquement sur les ordinateurs multiprocesseurs. Par conséquent, même si vous configurez le garbage collection via le fichier .csproj d’application ou via les scripts sur le billet de blog référencé, si le silo s’exécute sur une machine (virtuelle) avec un seul cœur, vous ne bénéficierez pas des avantages de gcServer=true
. Pour plus d’informations, consultez les remarques sur GCSettings.IsServerGC.