Udostępnij za pośrednictwem


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.