Udostępnij za pośrednictwem


<GCHeapCount> , element

Określa liczbę stosów/wątków do użycia na potrzeby odzyskiwania pamięci serwera.

<Konfiguracji>
  <Środowiska wykonawczego>
    <GCHeapCount>

Składnia

<GCHeapCount
   enabled="nn"/>

Atrybuty i elementy

W poniższych sekcjach opisano atrybuty, elementy podrzędne i elementy nadrzędne.

Atrybuty

Atrybut Opis
enabled Atrybut wymagany.

Określa liczbę stertów do użycia na potrzeby odzyskiwania pamięci serwera. Rzeczywista liczba stertów jest minimalną liczbą stertów, które określisz, a liczba procesorów, z których może korzystać proces.

włączony atrybut

Wartość Opis
nn Liczba stert do użycia dla serwera GC.

Elementy podrzędne

Brak.

Elementy nadrzędne

Element Opis
configuration Element główny w każdym pliku konfiguracji używanym przez środowisko uruchomieniowe języka wspólnego i aplikacje programu .NET Framework.
runtime Zawiera informacje dotyczące powiązania zestawu oraz wyrzucania elementów bezużytecznych.

Uwagi

Domyślnie wątki GC serwera są trwale skomunikowane z odpowiednim procesorem, dzięki czemu istnieje jeden stertę GC, jeden wątek GC serwera i jeden wątek GC serwera w tle dla każdego procesora. Począwszy od .NET Framework 4.6.2, można użyć elementu GCHeapCount, aby ograniczyć liczbę stert używanych przez aplikację do odzyskiwania pamięci serwera. Ograniczenie liczby stertów używanych do odzyskiwania pamięci serwera jest szczególnie przydatne w przypadku systemów z wieloma wystąpieniami aplikacji serwera.

GCHeapCount jest zwykle używany wraz z dwoma innymi flagami:

  • GCNoAffinitize, który kontroluje, czy wątki GC serwera/sterty są affinitized z procesorami CPU.

  • GCHeapAffinitizeMask, który kontroluje koligację wątków GC/sterty z procesorami CPU.

Jeśli GCHeapCount jest ustawiona i GCNoAffinitize jest wyłączona (jego ustawienie domyślne), istnieje koligacja między wątkami nn GC/sterty i pierwszymi procesorami nn . Za pomocą elementu GCHeapAffinitizeMask można określić, które procesory są używane przez sterty GC serwera procesu. W przeciwnym razie, jeśli w systemie jest uruchomionych wiele procesów serwera, ich użycie procesora nakłada się na siebie.

Jeśli ustawiono GCHeapCount i włączono GCNoAffinitize , moduł odśmiecenia pamięci ogranicza liczbę procesorów używanych dla GC serwera, ale nie affinitize sterty GC i procesorów.

Przykład

Poniższy przykład wskazuje, że aplikacja używa GC serwera z 10 stertami/wątkami. Ponieważ nie chcesz, aby te sterty nakładały się na sterty z innych aplikacji uruchomionych w systemie, należy użyć GCHeapAffinitizeMask , aby określić, że proces powinien używać procesorów CPU od 0 do 9.

<configuration>
   <runtime>
      <gcServer enabled="true"/>
      <GCHeapCount enabled="10"/>
      <GCHeapAffinitizeMask enabled="1023"/>
   </runtime>
</configuration>

W poniższym przykładzie nie jest affinitize wątków GC serwera i ogranicza liczbę sterty GC/wątków do 10.

<configuration>
   <runtime>
      <gcServer enabled="true"/>
      <GCHeapCount enabled="10"/>
      <GCNoAffinitize enabled="true"/>
   </runtime>
</configuration>

Zobacz też