Konfigurowanie odzyskiwania pamięci platformy .NET
Aby zapewnić dobrą wydajność, ważne jest skonfigurowanie odzyskiwania pamięci platformy .NET na potrzeby procesu silosu w prawidłowy sposób. Najlepszym połączeniem ustawień opartych na wynikach zespołu jest ustawienie gcServer=true
i gcConcurrent=true
. Te wartości można skonfigurować w projekcie C# (csproj) lub app.config. Aby uzyskać więcej informacji, zobacz Flavors of garbage collection (Smaki odzyskiwania pamięci).
.NET Core i .NET 5+
Ta metoda nie jest obsługiwana w przypadku kompilowania projektów w stylu zestawu SDK dla pełnego programu .NET Framework
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
</PropertyGroup>
.NET Framework
Projekty stylu zestawu SDK kompilujące się względem pełnego programu .NET Framework powinny nadal używać tego stylu konfiguracji. Rozważ przykładowy plik XML app.config :
<configuration>
<runtime>
<gcServer enabled="true"/>
<gcConcurrent enabled="true"/>
</runtime>
</configuration>
Nie jest to jednak tak proste, jeśli silos działa w ramach roli procesu roboczego platformy Azure, która domyślnie jest skonfigurowana do korzystania ze stacji roboczej GC. Istnieje odpowiedni wpis w blogu, który omawia sposób ustawiania tej samej konfiguracji roli procesu roboczego platformy Azure, zobacz Tryb odzyskiwania pamięci serwera na platformie Azure.
Ważne
Odzyskiwanie pamięci serwera jest dostępne tylko na komputerach wieloprocesorowych. W związku z tym nawet w przypadku skonfigurowania odzyskiwania pamięci za pośrednictwem pliku csproj aplikacji lub za pośrednictwem skryptów w określonym wpisie w blogu, jeśli silos jest uruchomiony na maszynie (wirtualnej) z jednym rdzeniem, nie uzyskasz korzyści z usługi gcServer=true
. Aby uzyskać więcej informacji, zobacz GC Ustawienia. IsServerGC uwagi.