Çöp toplama için çalışma zamanı yapılandırma seçenekleri

Bu sayfa, çalışma zamanında değiştirilebilen çöp toplayıcı (GC) ayarları hakkında bilgi içerir. Çalışan bir uygulamanın en yüksek performans düzeyine ulaşmak istiyorsanız bu ayarları kullanmayı deneyin. Bununla birlikte, varsayılan olarak, çoğu uygulama için tipik durumlarda en iyi performansı sağlar.

Ayarlar, bu sayfadaki gruplar halinde düzenlenir. Her grup içindeki ayarlar, belirli bir sonuca ulaşmak için genellikle birbirleriyle birlikte kullanılır.

Not

  • Bu ayarlar ayrıca uygulama çalışırken dinamik olarak değiştirilebilir, bu nedenle ayarladığınız tüm çalışma zamanı ayarları geçersiz kılınabilir.
  • Gecikme düzeyigibi bazı ayarlar tipik olarak yalnızca TASARıM zamanında API aracılığıyla ayarlanır. Bu tür ayarlar bu sayfadan çıkarılır.
  • Sayı değerleri için, dosyadaki runtimeconfig.js , ortam değişkeni ayarları için onaltılı gösterimdeki ayarlar için ondalık gösterimi kullanın. Onaltılık değerler için, bunları "0x" öneki olmadan veya olmadan belirtebilirsiniz.
  • Ortam değişkenlerini kullanıyorsanız, .NET 6, yerine ön ek üzerinde standartlaştırır DOTNET_ COMPlus_ . Ancak COMPlus_ önek çalışmaya devam edecektir. .NET çalışma zamanının önceki bir sürümünü kullanıyorsanız, COMPlus_ Örneğin, önekini kullanmaya devam etmelisiniz COMPlus_gcServer .

Çöp toplamanın türleri

Çöp toplamanın iki ana özellikleri, iş istasyonu GC ve sunucu GC ' dir. İkisi arasındaki farklılıklar hakkında daha fazla bilgi için bkz. Workstation and Server çöp toplama.

Çöp toplamanın alt türleri arka plan ve eş zamanlı değil.

Çöp toplamanın türlerini seçmek için aşağıdaki ayarları kullanın:

İş istasyonu ile sunucu

  • Uygulamanın iş istasyonu çöp toplamayı veya sunucu çöp toplamayı kullanıp kullanmadığını yapılandırır.
  • Varsayılan: Iş Istasyonu atık toplama. Bu değeri değerine ayarlamaya eşdeğerdir false .
Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.Server false -iş istasyonu
true -sunucu
.NET Core 1,0
MSBuild özelliği ServerGarbageCollection false -iş istasyonu
true -sunucu
.NET Core 1,0
Ortam değişkeni COMPlus_gcServer 0 -iş istasyonu
1 -sunucu
.NET Core 1,0
Ortam değişkeni DOTNET_gcServer 0 -iş istasyonu
1 -sunucu
.NET 6
.NET Framework içinapp.config GCServer false -iş istasyonu
true -sunucu

Örnekler

runtimeconfig.js dosya:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.Server": true
      }
   }
}

Project dosyası:

<Project Sdk="Microsoft.NET.Sdk">

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

</Project>

Arka Plan GC

  • Arka plan (eşzamanlı) Çöp toplamanın etkinleştirilip etkinleştirilmeyeceğini yapılandırır.
  • Varsayılan: arka plan GC kullanın. Bu değeri değerine ayarlamaya eşdeğerdir true .
  • Daha fazla bilgi için bkz. arka plan atık toplama.
Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.Concurrent true -arka plan GC
false -eş zamanlı olmayan GC
.NET Core 1,0
MSBuild özelliği ConcurrentGarbageCollection true -arka plan GC
false -eş zamanlı olmayan GC
.NET Core 1,0
Ortam değişkeni COMPlus_gcConcurrent 1 -arka plan GC
0 -eş zamanlı olmayan GC
.NET Core 1,0
Ortam değişkeni DOTNET_gcConcurrent 1 -arka plan GC
0 -eş zamanlı olmayan GC
.NET 6
.NET Framework içinapp.config gcConcurrent true -arka plan GC
false -eş zamanlı olmayan GC

Örnekler

runtimeconfig.js dosya:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.Concurrent": false
      }
   }
}

Project dosyası:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
  </PropertyGroup>

</Project>

Kaynak kullanımını yönetme

Çöp toplayıcının bellek ve işlemci kullanımını yönetmek için aşağıdaki ayarları kullanın:

Bu ayarlardan bazıları hakkında daha fazla bilgi için, bkz. iş istasyonu ve sunucu GC blogu girişi.

Yığın sayısı

Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.HeapCount ondalık değer .NET Core 3.0
Ortam değişkeni COMPlus_GCHeapCount onaltılık değer .NET Core 3.0
Ortam değişkeni DOTNET_GCHeapCount onaltılık değer .NET 6
app.config için .NET Framework GCHeapCount ondalık değer .NET Framework 4.6.2

Örnek:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.HeapCount": 16
      }
   }
}

İpucu

seçeneğini üzerinderuntimeconfig.jsayar runtimeconfig.js ondalık değer belirtin. Seçeneği bir ortam değişkeni olarak ayar ediyorsanız onaltılık bir değer belirtin. Örneğin, yığın sayısını 16 ile sınırlamak için, JSON dosyası için değerler 16, ortam değişkeni için 0x10 10 olabilir.

Maskeyi affinitize

  • Atık toplayıcı iş parçacıklarının kullanması gereken tam işlemcileri belirtir.
  • GC işlemci benzeşliği devre dışı bırakılırsa, bu ayar yoksayılır.
  • Yalnızca sunucu çöp toplama için geçerlidir.
  • değeri, işlem için kullanılabilen işlemcileri tanımlayan bir bit maskesidir. Örneğin, 1023 ondalık değeri (veya ortam değişkenlerini kullanıyorsanız 0x3FF veya 3FF onaltılık değeri) ikili notasyonunda 0011 1111 1111 değeridir. Bu, kullanılacak ilk 10 işlemciyi belirtir. Sonraki 10 işlemciyi ( yani 10-19) belirtmek için, 1047552 ondalık değerini (veya 0xFFC00 veya FFC00) ondalık değerini belirtin. Bu değer, 1111 1111 1100 0000 0000 ikili değerine eşdeğerdir.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.HeapAffinitizeMask ondalık değer .NET Core 3.0
Ortam değişkeni COMPlus_GCHeapAffinitizeMask onaltılık değer .NET Core 3.0
Ortam değişkeni DOTNET_GCHeapAffinitizeMask onaltılık değer .NET 6
app.config için .NET Framework GCHeapAffinitizeMask ondalık değer .NET Framework 4.6.2

Örnek:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.HeapAffinitizeMask": 1023
      }
   }
}

Aralıkları açıklama

  • Atık toplayıcı iş parçacıkları için kullanılan işlemcilerin listesini belirtir.
  • Bu ayar System.GC.HeapAffinitizeMaskile benzerdir, ancak 64'den fazla işlemci belirtmenize izin verir.
  • İşletim Windows için işlemci numarasına veya aralığına karşılık gelen CPUgrubuna ön ek olarak "0:1-10,0:12,1:50-52,1:70".
  • GC işlemci benzeşliği devre dışı bırakılırsa, bu ayar yoksayılır.
  • Yalnızca sunucu çöp toplama için geçerlidir.
  • Daha fazla bilgi için Maoni Stephens blog'da 64 CPU'> GC için CPU yapılandırmasını daha iyi hale yapma.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.GCHeapAffinitizeRanges İşlemci numaralarının veya işlemci sayılarının aralıklarının virgülle ayrılmış listesi.
Unix örneği: "1-10,12,50-52,70"
Windows örnek: "0:1-10,0:12,1:50-52,1:70"
.NET Core 3.0
Ortam değişkeni COMPlus_GCHeapAffinitizeRanges İşlemci numaralarının veya işlemci sayılarının aralıklarının virgülle ayrılmış listesi.
Unix örneği: "1-10,12,50-52,70"
Windows örnek: "0:1-10,0:12,1:50-52,1:70"
.NET Core 3.0
Ortam değişkeni DOTNET_GCHeapAffinitizeRanges İşlemci numaralarının veya işlemci sayılarının aralıklarının virgülle ayrılmış listesi.
Unix örneği: "1-10,12,50-52,70"
Windows örnek: "0:1-10,0:12,1:50-52,1:70"
.NET 6

Örnek:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.GCHeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:70"
      }
   }
}

CPU grupları

  • Atık toplayıcının CPU grupları mı yoksa kullanma mı kullandığını yapılandıran.

    Bir 64 bit Windows birden çok CPU grubu olduğunda, yani 64'den fazla işlemci olduğunda, bu öğenin etkinleştirilmesi çöp toplamayı tüm CPU gruplarına genişleter. Atık toplayıcı, yığın oluşturmak ve dengelemek için tüm çekirdekleri kullanır.

  • Yalnızca 64 bitlik işletim sistemlerinde sunucu çöp Windows için geçerlidir.

  • Varsayılan: GC, CPU grupları arasında genişletici değildir. Bu, değerini olarak ayarlamaya 0 eşdeğerdir.

  • Daha fazla bilgi için Maoni Stephens blog'da 64 CPU'> GC için CPU yapılandırmasını daha iyi hale yapma.

Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.CpuGroup 0 - devre dışı
1 - etkin
.NET 5
Ortam değişkeni COMPlus_GCCpuGroup 0 - devre dışı
1 - etkin
.NET Core 1.0
Ortam değişkeni DOTNET_GCCpuGroup 0 - devre dışı
1 - etkin
.NET 6
app.config için .NET Framework GCCpuGroup false - devre dışı
true - etkin

Not

Ortak dil çalışma zamanını (CLR) iş parçacığı havuzundan iş parçacığını tüm CPU grupları arasında dağıtacak şekilde yapılandırmak için Thread_UseAllCpuGroups etkinleştirin. .NET Core uygulamaları için ortam değişkeninin değerini olarak ayarerek bu DOTNET_Thread_UseAllCpuGroups seçeneği 1 etkinleştirebilirsiniz.

Affinitize

  • atık toplama iş parçacıklarının işlemcilerleffinitize olup olmadığını belirtir. BIR GC iş parçacığını affinitize etmek, yalnızca kendi CPU's üzerinde çalıştırılay olduğu anlamına gelir. Her GC iş parçacığı için bir yığın oluşturulur.
  • Yalnızca sunucu çöp toplama için geçerlidir.
  • Varsayılan: atık toplama iş parçacıklarını işlemcilerle affinitize. Bu, değerini olarak ayarlamaya false eşdeğerdir.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.NoAffinitize false - affinitize
true - affinitize etme
.NET Core 3.0
Ortam değişkeni COMPlus_GCNoAffinitize 0 - affinitize
1 - affinitize etme
.NET Core 3.0
Ortam değişkeni DOTNET_GCNoAffinitize 0 - affinitize
1 - affinitize etme
.NET 6
app.config için .NET Framework GCNoAffinitize false - affinitize
true - affinitize etme
.NET Framework 4.6.2

Örnek:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.NoAffinitize": true
      }
   }
}

Yığın sınırı

  • GC yığını ve GC kayıt tutma için bayt cinsinden en büyük işleme boyutunu belirtir.

  • Bu ayar yalnızca 64 bit bilgisayarlar için geçerlidir.

  • Nesne başına yığın sınırları yapılandırılmışsa bu ayar yoksayılır.

  • Yalnızca belirli durumlarda geçerli olan varsayılan değer, kapsayıcıda bellek sınırının %20 MB'lık veya %75'inden büyüktür. Varsayılan değer aşağıdakiler için geçerlidir:

Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.HeapHardLimit ondalık değer .NET Core 3.0
Ortam değişkeni COMPlus_GCHeapHardLimit onaltılık değer .NET Core 3.0
Ortam değişkeni DOTNET_GCHeapHardLimit onaltılık değer .NET 6

Örnek:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.HeapHardLimit": 209715200
      }
   }
}

İpucu

seçeneğini üzerinderuntimeconfig.jsayar runtimeconfig.js ondalık değer belirtin. Seçeneği bir ortam değişkeni olarak ayar ediyorsanız onaltılık bir değer belirtin. Örneğin, 200 mebibayt (MiB) yığın sabit sınırı belirtmek için, JSON dosyası için değerler 209715200 ve ortam değişkeni için 0xC800000 veya C8000000 olabilir.

Yığın sınırı yüzde

  • İzin verilebilir GC yığını kullanımını toplam fiziksel belleğin yüzdesi olarak belirtir.

  • System.GC.HeapHardLimit de ayarlanırsa, bu ayar yoksayılır.

  • Bu ayar yalnızca 64 bit bilgisayarlar için geçerlidir.

  • İşlem, belirtilen bellek sınırına sahip bir kapsayıcı içinde çalıştıriliyorsa, yüzde bu bellek sınırının yüzdesi olarak hesaplanır.

  • Nesne başına yığın sınırları yapılandırılmışsa bu ayar yoksayılır.

  • Yalnızca belirli durumlarda geçerli olan varsayılan değer, kapsayıcıda bellek sınırının %20 MB'lık veya %75'inden büyüktür. Varsayılan değer aşağıdakiler için geçerlidir:

    • İşlem, belirtilen bellek sınırına sahip bir kapsayıcı içinde çalışıyor.
    • System.GC.HeapHardLimit ayarlanmaz.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.HeapHardLimitPercent ondalık değer .NET Core 3.0
Ortam değişkeni COMPlus_GCHeapHardLimitPercent onaltılık değer .NET Core 3.0
Ortam değişkeni DOTNET_GCHeapHardLimitPercent onaltılık değer .NET 6

Örnek:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.HeapHardLimitPercent": 30
      }
   }
}

İpucu

seçeneğini üzerinderuntimeconfig.jsayar runtimeconfig.js ondalık değer belirtin. Seçeneği bir ortam değişkeni olarak ayar ediyorsanız onaltılık bir değer belirtin. Örneğin, yığın kullanımını %30 ile sınırlamak için, JSON dosyası için değerler 30, ortam değişkeni için 0x1E veya 1E olur.

Nesne başına yığın sınırları

GC'nin izin verilebilir yığın kullanımını nesne başına yığın temelinde belirtebilirsiniz. Farklı yığınlar büyük nesne yığını (LOH), küçük nesne yığını (SOH) ve sabitlenmiş nesne yığınıdır (POH).

  • , veya ayarlarından herhangi biri için bir DOTNET_GCHeapHardLimitSOH DOTNET_GCHeapHardLimitLOH değer DOTNET_GCHeapHardLimitPOH belirtirsiniz, ve için de bir değer belirtmeniz DOTNET_GCHeapHardLimitSOH DOTNET_GCHeapHardLimitLOH gerekir. Bunu yoksa, çalışma zamanı başlatılamıyor.
  • için varsayılan değer DOTNET_GCHeapHardLimitPOH 0'dır. DOTNET_GCHeapHardLimitSOH``DOTNET_GCHeapHardLimitLOHve varsayılan değerlerine sahip değildir.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.HeapHardLimitSOH ondalık değer .NET 5
Ortam değişkeni COMPlus_GCHeapHardLimitSOH onaltılık değer .NET 5
Ortam değişkeni DOTNET_GCHeapHardLimitSOH onaltılık değer .NET 6
Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.HeapHardLimitLOH ondalık değer .NET 5
Ortam değişkeni COMPlus_GCHeapHardLimitLOH onaltılık değer .NET 5
Ortam değişkeni DOTNET_GCHeapHardLimitLOH onaltılık değer .NET 6
Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.HeapHardLimitPOH ondalık değer .NET 5
Ortam değişkeni COMPlus_GCHeapHardLimitPOH onaltılık değer .NET 5
Ortam değişkeni DOTNET_GCHeapHardLimitPOH onaltılık değer .NET 6

İpucu

Üzerinderuntimeconfig.js seçeneğini ayarlıyorsanız, bir ondalık değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıyorsanız, onaltılık bir değer belirtin. Örneğin, 200 mebibytes (MIB) yığın sabit sınırı belirtmek için, değerler JSON dosyası için 209715200 ve ortam değişkeni için 0xC800000 veya C800000 olur.

Nesne başına yığın sınırı yüzdesi

GC 'nin izin verilen yığın kullanımını nesne başına yığın temelinde belirtebilirsiniz. Farklı sayfa@@ 'ler büyük nesne yığını (LOH), küçük nesne yığını (SoH) ve sabitlenmiş nesne yığını (POH).

  • , Veya ayarlarından herhangi biri için bir değer belirtirseniz DOTNET_GCHeapHardLimitSOHPercent DOTNET_GCHeapHardLimitLOHPercent DOTNET_GCHeapHardLimitPOHPercent , ve için bir değer de belirtmeniz gerekir DOTNET_GCHeapHardLimitSOHPercent DOTNET_GCHeapHardLimitLOHPercent . Aksi takdirde, çalışma zamanı başlatılamaz.
  • DOTNET_GCHeapHardLimitSOH, DOTNET_GCHeapHardLimitLOH , Ve belirtildiğinde bu ayarlar yoksayılır DOTNET_GCHeapHardLimitPOH .
  • 1 değeri, GC 'nin bu nesne yığını için toplam fiziksel belleğin %1 ' i kullanması anlamına gelir.
  • Her değerin sıfırdan büyük ve 100 ' den küçük olması gerekir. Ayrıca, üç yüzde değerinin toplamı 100 ' den az olmalıdır. Aksi takdirde, çalışma zamanı başlatılamaz.
Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.HeapHardLimitSOHPercent ondalık değer .NET 5
Ortam değişkeni COMPlus_GCHeapHardLimitSOHPercent onaltılık değer .NET 5
Ortam değişkeni DOTNET_GCHeapHardLimitSOHPercent onaltılık değer .NET 6
Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.HeapHardLimitLOHPercent ondalık değer .NET 5
Ortam değişkeni COMPlus_GCHeapHardLimitLOHPercent onaltılık değer .NET 5
Ortam değişkeni DOTNET_GCHeapHardLimitLOHPercent onaltılık değer .NET 6
Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.HeapHardLimitPOHPercent ondalık değer .NET 5
Ortam değişkeni COMPlus_GCHeapHardLimitPOHPercent onaltılık değer .NET 5
Ortam değişkeni DOTNET_GCHeapHardLimitPOHPercent onaltılık değer .NET 6

İpucu

Üzerinderuntimeconfig.js seçeneğini ayarlıyorsanız, bir ondalık değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıyorsanız, onaltılık bir değer belirtin. Örneğin, yığın kullanımını %30 olarak sınırlandırmak için değerler JSON dosyası için 30, ortam değişkeni için 0x1E veya 1E olur.

Yüksek bellek yüzdesi

Bellek yükü, kullanımdaki fiziksel bellek yüzdesi ile belirtilir. Varsayılan olarak, fiziksel bellek yükü %90' a ulaştığında çöp toplama işlemi, sayfalama önlemek için atık koleksiyonları düzenleme konusunda daha agresif hale gelir. Bellek yükü %90 altındaysa, GC, daha kısa duraklamalar olan ancak toplam yığın boyutunu çok azalyan tüm çöp koleksiyonları için arka plan koleksiyonlarını tercih eder. Önemli miktarda belleğe (80GB veya daha fazla) sahip makinelerde, varsayılan yükleme eşiği %90 ile %97 arasındadır.

Yüksek bellek yükü eşiği, DOTNET_GCHighMemPercent ortam değişkeni veya System.GC.HighMemoryPercent JSON yapılandırma ayarı tarafından ayarlanabilir. Yığın boyutunu denetlemek istiyorsanız eşiği ayarlamayı düşünün. Örneğin, 64 GB bellek içeren bir makinedeki baskın işlem için, kullanılabilir belleğin %10 ' u olduğunda GC 'nin yeniden davranmasını sağlamak mantıklıdır. Ancak, daha küçük işlemler için, örneğin yalnızca 1 GB bellek tüketen bir işlem, kullanılabilir belleğin %10 ' dan az olan GC çalıştırılabilir. Bu daha küçük süreçler için eşiği daha yüksek olarak ayarlamayı düşünün. Öte yandan, büyük işlemlerin daha küçük yığın boyutlarına sahip olmasını istiyorsanız (kullanılabilir fiziksel bellek miktarı olsa bile), bu eşiği düşürmek GC 'nin yığını daha erken sıkıştırmak için etkili bir şekilde tepki vermesini sağlar.

Not

Bir kapsayıcıda çalışan süreçler için, GC fiziksel belleği kapsayıcı sınırına göre değerlendirir.

Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js System.GC.HighMemoryPercent ondalık değer .NET 5
Ortam değişkeni COMPlus_GCHighMemPercent onaltılık değer .NET Core 3.0
.NET Framework 4.7.2
Ortam değişkeni DOTNET_GCHighMemPercent onaltılık değer .NET 6

İpucu

seçeneğini üzerinderuntimeconfig.jsayar runtimeconfig.js bir ondalık değer belirtin. Seçeneği ortam değişkeni olarak ayar ediyorsanız onaltılık bir değer belirtin. Örneğin, yüksek bellek eşiğini %75 olarak ayarlamak için JSON dosyası için değerler 75, ortam değişkeni için 0x4B 4B olabilir.

VM'yi koruma

  • Silinmesi gereken kesimlerin gelecekte kullanmak üzere bekleme listesine konup konmayacak veya işletim sistemine (OS) geri serbest bırakılamayacak şekilde yapılandırıldı.
  • Varsayılan: Segmentleri işletim sistemine geri bırakın. Bu, değerini olarak ayarlamaya false eşdeğerdir.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.RetainVM false - işletim sistemi sürümü
true - bekleme moduna geçirme
.NET Core 1.0
MSBuild özelliği RetainVMGarbageCollection false - işletim sistemi sürümü
true - bekleme moduna geçirme
.NET Core 1.0
Ortam değişkeni COMPlus_GCRetainVM 0 - işletim sistemi sürümü
1 - bekleme moduna geçirme
.NET Core 1.0
Ortam değişkeni DOTNET_GCRetainVM 0 - işletim sistemi sürümü
1 - bekleme moduna geçirme
.NET 6

Örnekler

runtimeconfig.jsdosyasını açın:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.RetainVM": true
      }
   }
}

Project dosyası:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
  </PropertyGroup>

</Project>

Büyük sayfalar

  • Yığın sabit sınırı ayarlanırken büyük sayfaların kullanıla mı olacağını belirtir.
  • Varsayılan: Yığın sabit sınırı ayarlanırken büyük sayfalar kullanma. Bu, değerini olarak ayarlamaya 0 eşdeğerdir.
  • Bu deneysel bir ayardır.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js Yok Yok Yok
Ortam değişkeni COMPlus_GCLargePages 0 - devre dışı
1 - etkin
.NET Core 3.0
Ortam değişkeni DOTNET_GCLargePages 0 - devre dışı
1 - etkin
.NET 6

Büyük nesnelere izin ver

  • Toplam boyutu 2 gigabayttan (GB) büyük diziler için 64 bit platformlarda atık toplayıcı desteğini yapılandırır.
  • Varsayılan: GC, 2 GB'den büyük dizileri destekler. Bu, değerini olarak ayarlamaya 1 eşdeğerdir.
  • Bu seçenek gelecek bir .NET sürümünden kaldırılmış olabilir.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js Yok Yok Yok
Ortam değişkeni COMPlus_gcAllowVeryLargeObjects 1 - etkin
0 - devre dışı
.NET Core 1.0
Ortam değişkeni DOTNET_gcAllowVeryLargeObjects 1 - etkin
0 - devre dışı
.NET 6
app.config için .NET Framework gcAllowVeryLargeObjects 1 - etkin
0 - devre dışı
.NET Framework 4.5

Büyük nesne yığın eşiği

  • Nesnelerin büyük nesne yığınında (LOH) gitmelerini neden olan eşik boyutunu bayt cinsinden belirtir.
  • Varsayılan eşik 85.000 bayttır.
  • Belirttiğiniz değer varsayılan eşikten büyük olması gerekir.
Ayar adı Değerler Sürüm tanıtıldı
runtimeconfig.js System.GC.LOHThreshold ondalık değer .NET Core 1.0
Ortam değişkeni COMPlus_GCLOHThreshold onaltılık değer .NET Core 1.0
Ortam değişkeni DOTNET_GCLOHThreshold onaltılık değer .NET 6
app.config için .NET Framework GCLOHThreshold ondalık değer .NET Framework 4.8

Örnek:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.LOHThreshold": 120000
      }
   }
}

İpucu

seçeneğini üzerinderuntimeconfig.jsayar runtimeconfig.js bir ondalık değer belirtin. Seçeneği ortam değişkeni olarak ayar ediyorsanız onaltılık bir değer belirtin. Örneğin, 120.000 baytlık bir eşik boyutu ayarlamak için, değerler JSON dosyası için 120000, ve ortam değişkeni için 0x1D4C0 ya da 1D4C0 olur.

Tek başına GC

Ayar adı Değerler Sunulan sürüm
Üzerinderuntimeconfig.js Yok Yok Yok
Ortam değişkeni COMPlus_GCName string_path .NET Core 2.0
Ortam değişkeni DOTNET_GCName string_path .NET 6