Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfa .NET çalışma zamanı çöp toplayıcısı (GC) için ayarlar hakkında bilgi içerir. Çalışan bir uygulamanın en yüksek performansını elde etmeye çalışıyorsanız bu ayarları kullanmayı göz önünde bulundurun. Ancak, varsayılanlar tipik durumlarda çoğu uygulama için en iyi performansı sağlar.
Ayarlar bu sayfada gruplar halinde düzenlenmiştir. Her gruptaki ayarlar genellikle belirli bir sonuç elde etmek için birbirleriyle birlikte kullanılır.
Not
- Bu yapılandırmalar yalnızca GC başlatıldığında çalışma zamanı tarafından okunur (bu genellikle işlem başlatma zamanında olduğu anlamına gelir). Bir işlem zaten çalışırken ortam değişkenini değiştirirseniz, değişiklik bu işleme yansıtılmayacaktır. Çalışma zamanında API'ler aracılığıyla değiştirilebilen gecikme süresi düzeyi gibi ayarlar bu sayfadan atlanır.
- GC işlem başına olduğundan, bu yapılandırmaları makine düzeyinde ayarlamak nadiren mantıklıdır. Örneğin, bir makinedeki her .NET işleminin sunucu GC'sini veya aynı yığın sabit sınırını kullanmasını istemezsiniz.
- Sayı değerleri için, runtimeconfig.json veya runtimeconfig.template.json dosyasındaki ayarlar için ondalık gösterimini ve ortam değişkeni ayarları için onaltılık gösterimi kullanın. Onaltılık değerler için, bunları "0x" ön eki ile veya olmadan belirtebilirsiniz.
- Ortam değişkenlerini kullanıyorsanız , .NET 6 ve sonraki sürümleri yerine ön ekte
DOTNET_COMPlus_standartlaştırılır. Ancak önCOMPlus_ek çalışmaya devam eder. .NET çalışma zamanının önceki bir sürümünü kullanıyorsanız, yine de ön ekiniCOMPlus_kullanmanız gerekir, örneğin.COMPlus_gcServer
Yapılandırmayı belirtme yolları
.NET çalışma zamanının farklı sürümleri için yapılandırma değerlerini belirtmenin farklı yolları vardır. Aşağıdaki tabloda bir özet gösterilmektedir.
| Yapılandırma konumu | Bu konumun geçerli olduğu .NET sürümleri | Biçimler | Nasıl yorumlanır? |
|---|---|---|---|
| runtimeconfig.json dosyası/ runtimeconfig.template.json dosyası |
.NET (Core) | n | n ondalık değer olarak yorumlanır. |
| Ortam değişkeni | .NET Framework, .NET | 0xn veya n | n, iki biçimde de onaltılık değer olarak yorumlanır |
| app.config dosyası | .NET Çerçevesi | 0xn | n, onaltılık değer1 olarak yorumlanır |
1 App.config dosya ayarı için ön ek olmadan 0x bir değer belirtebilirsiniz, ancak önerilmez. .NET Framework 4.8+'da, bir hata nedeniyle ön ek olmadan 0x belirtilen bir değer onaltılık olarak yorumlanır, ancak önceki .NET Framework sürümlerinde ondalık olarak yorumlanır. Yapılandırmanızı değiştirmek zorunda kalmamak için app.config dosyanızda bir değer belirtirken ön eki kullanın 0x .
Örneğin, A.exeGCHeapCountbir .NET Framework uygulaması için 12 yığın belirtmek için, A.exe.config dosyasına aşağıdaki XML'yi ekleyin.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
...
<runtime>
<gcServer enabled="true"/>
<GCHeapCount>0xc</GCHeapCount>
</runtime>
</configuration>
Hem .NET (Core) hem de .NET Framework için ortam değişkenlerini kullanabilirsiniz.
.NET 6 veya sonraki bir sürümü kullanan Windows'ta:
SET DOTNET_gcServer=1
SET DOTNET_GCHeapCount=c
.NET 6 veya sonraki bir sürümü kullanan diğer işletim sistemlerinde:
export DOTNET_gcServer=1
export DOTNET_GCHeapCount=c
.NET Framework kullanmıyorsanız, değeri runtimeconfig.json veya runtimeconfig.template.json dosyasında da ayarlayabilirsiniz.
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
Çöp toplamanın tatları
Çöp toplamanın iki ana türü iş istasyonu GC ve sunucu GC'dir. İkisi arasındaki farklar hakkında daha fazla bilgi için bkz . İş istasyonu ve sunucu çöp toplama.
Atık toplamanın alt filtişi arka plan ve eşzamanlı değildir.
Çöp toplamanın çeşitlerini seçmek için aşağıdaki ayarları kullanın:
İş istasyonu ve sunucu karşılaştırması
- Uygulamanın iş istasyonu çöp toplama mı yoksa sunucu çöp toplama mı kullandığını yapılandırılır.
- Varsayılan: İş istasyonu çöp toplama. Bu, değerini
falseolarak ayarlamakla eşdeğerdir.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Server |
false -workstationtrue -sunucu |
.NET Core 1.0 |
| MSBuild özelliği | ServerGarbageCollection |
false -workstationtrue -sunucu |
.NET Core 1.0 |
| Ortam değişkeni | DOTNET_gcServer |
0 -workstation1 -sunucu |
.NET 6 |
| .NET Framework için app.config | GCServer |
false -workstationtrue -sunucu |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.Server": true
}
}
Proje 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ştirilmediğini yapılandırılır.
- Varsayılan: Arka plan GC kullanın. Bu, değerini
trueolarak ayarlamakla eşdeğerdir. - Daha fazla bilgi için bkz . Arka plan çöp toplama.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Concurrent |
true - arka plan GCfalse - eşzamanlı olmayan GC |
.NET Core 1.0 |
| MSBuild özelliği | ConcurrentGarbageCollection |
true - arka plan GCfalse - eşzamanlı olmayan GC |
.NET Core 1.0 |
| Ortam değişkeni | DOTNET_gcConcurrent |
1 - arka plan GC0 - eşzamanlı olmayan GC |
.NET 6 |
| .NET Framework için app.config | gcConcurrent |
true - arka plan GCfalse - eşzamanlı olmayan GC |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Concurrent": false
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.Concurrent": false
}
}
Proje dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
</Project>
Tek başına GC
Varsayılan GC uygulaması yerine tek başına çöp toplayıcı kullanmak için yolu (.NET 9 ve sonraki sürümlerde) veya GC yerel kitaplığının adını belirtebilirsiniz.
Yol
- Çalışma zamanının varsayılan GC uygulaması yerine yüklenebilen gc yerel kitaplığının tam yolunu belirtir. Bu konumun güvenli olması için kötü amaçlı olabilecek kurcalamalara karşı korunması gerekir.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Path |
string_path | .NET 9 |
| Ortam değişkeni | DOTNET_GCPath |
string_path | .NET 9 |
Veri Akışı Adı
Çalışma zamanının varsayılan GC uygulaması yerine yükleyen GC yerel kitaplığının adını belirtir. .NET 9'da davranış, Yol yapılandırmasının kullanıma sunulmasıyla değişti.
.NET 8 ve önceki sürümlerde:
- Kitaplığın yalnızca bir adı belirtilirse, kitaplığın .NET çalışma zamanıyla aynı dizinde bulunması gerekir (Windows'da coreclr.dll , Linux'ta libcoreclr.so veya OSX'te libcoreclr.dylib ).
- Değer göreli bir yol da olabilir; örneğin, ".. Windows'da \clrgc.dll" clrgc.dll .NET çalışma zamanı dizininin üst dizininden yüklenir.
.NET 9 ve sonraki sürümlerde bu değer yalnızca bir dosya adı belirtir (yollara izin verilmez):
- .NET, uygulamanızın
Mainyöntemini içeren derlemenin bulunduğu dizinde belirttiğiniz adı arar. - Dosya bulunamazsa .NET çalışma zamanı dizininde arama yapılır.
Yol yapılandırması belirtilirse bu yapılandırma ayarı yoksayılır.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Name |
string_name | .NET 7 |
| Ortam değişkeni | DOTNET_GCName |
string_name | .NET 6 |
LOH'a özgü ayarlar
Çok büyük nesnelere izin ver
- Toplam boyutu 2 gigabayttan (GB) büyük diziler için 64 bit platformlarda çöp toplayıcı desteğini yapılandırır.
- Varsayılan: GC, 2 GB'tan büyük dizileri destekler. Bu, değerini
1olarak ayarlamakla eşdeğerdir. - Bu seçenek,.NET'in gelecek bir sürümünde kullanımdan kalkabilir.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | Yok | Yok | Yok |
| Ortam değişkeni | DOTNET_gcAllowVeryLargeObjects |
1 -Etkin0 -sakat |
.NET 6 |
| .NET Framework için app.config | gcAllowVeryLargeObjects |
1 -Etkin0 -sakat |
.NET Framework 4.5 |
Büyük nesne yığını eşiği
- Nesnelerin büyük nesne yığınına (LOH) gitmesine 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 olmalıdır.
- Değer, çalışma zamanı tarafından geçerli yapılandırma için mümkün olan en büyük boyuta eşlenebilir. Api aracılığıyla GC.GetConfigurationVariables() çalışma zamanında kullanımdaki değeri inceleyebilirsiniz.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.LOHThreshold |
ondalık değer | .NET Core 3.0 |
| Ortam değişkeni | DOTNET_GCLOHThreshold |
onaltılık değer | .NET 6 |
| .NET Framework için app.config | GCLOHThreshold | ondalık değer | .NET Framework 4.8 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
İpucu
runtimeconfig.json seçeneğini ayarlıysanız, ondalık bir değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıysanı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 veya 1D4C0 olabilir.
Tüm GC tatları için kaynak kullanımını yönetme
Aşağıdaki ayarlar GC'nin tüm tatları için geçerlidir:
- Yığın sabit sınırı
- Yığın sabit sınırı yüzdesi
- Nesne başına yığın sabit sınırları
- Nesne başına yığın sabit sınır yüzdeleri
- Büyük sayfalar
- Bölge aralığı
- Bölge boyutu
- Yüksek bellek yüzdesi
- VM'leri koruma
- Bellek tasarrufu
Yığın sabit sınırı
- Yığın sabit sınırı, GC yığını ve GC muhasebesi için bayt cinsinden maksimum işleme boyutu olarak tanımlanır.
- Bu ayar yalnızca 64 bit bilgisayarlar için geçerlidir.
- Bellek kısıtlanmış bir ortamda (örneğin, bir kapsayıcı) çalıştırılıyorsa ve bu değer ayarlanmamışsa, varsayılan değer 20 MB veya kapsayıcı sınırının yığın sabit sınırı yüzdesidir (hangisi daha büyükse).
- Nesne başına yığın sabit sınırları yapılandırılırsa bu ayar yoksayılır.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimit |
ondalık değer | .NET Core 3.0 |
| Ortam değişkeni | DOTNET_GCHeapHardLimit |
onaltılık değer | .NET 6 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
İpucu
runtimeconfig.json seçeneğini ayarlıysanız, ondalık bir değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıysanız onaltılık bir değer belirtin. Örneğin, 200 mebibayt (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 olabilir.
Yığın sabit sınırı yüzdesi
- Toplam fiziksel belleğin yüzdesi olarak yığın sabit sınırını belirtir.
- İşlem, ayarlanmış bellek sınırı (örneğin, bir kapsayıcı) olan bir ortamda çalışıyorsa, bu sınır toplam fiziksel bellek olarak değerlendirilir. Bu tür ortamlarda varsayılan değer 75%değeridir.
- Bu ayar yalnızca 64 bit bilgisayarlar için geçerlidir.
- Nesne başına yığın sabit sınırları yapılandırılırsa veya yığın sabit sınırı yapılandırılırsa bu ayar yoksayılır.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitPercent |
ondalık değer | .NET Core 3.0 |
| Ortam değişkeni | DOTNET_GCHeapHardLimitPercent |
onaltılık değer | .NET 6 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
İpucu
runtimeconfig.json seçeneğini ayarlıysanız, ondalık bir değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıysanız onaltılık bir değer belirtin. Örneğin, yığın kullanımını %30 ile sınırlamak için değerler JSON dosyası için 30, ortam değişkeni için 0x1E veya 1E olur.
Nesne başına yığın sabit sınırları
GC'nin yığın sabit sınırı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).
- ,
DOTNET_GCHeapHardLimitSOHveya ayarlarından herhangi biriDOTNET_GCHeapHardLimitLOHiçin bir değer belirtirseniz veDOTNET_GCHeapHardLimitPOHiçinDOTNET_GCHeapHardLimitSOHde bir değer belirtmenizDOTNET_GCHeapHardLimitLOHgerekir. Aksi takdirde çalışma zamanı başlatılamaz. - için
DOTNET_GCHeapHardLimitPOHvarsayılan değer 0'dır.DOTNET_GCHeapHardLimitSOHveDOTNET_GCHeapHardLimitLOHvarsayılan değerleri yoktur.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitSOH |
ondalık değer | .NET 5 |
| Ortam değişkeni | DOTNET_GCHeapHardLimitSOH |
onaltılık değer | .NET 6 |
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitLOH |
ondalık değer | .NET 5 |
| Ortam değişkeni | DOTNET_GCHeapHardLimitLOH |
onaltılık değer | .NET 6 |
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitPOH |
ondalık değer | .NET 5 |
| Ortam değişkeni | DOTNET_GCHeapHardLimitPOH |
onaltılık değer | .NET 6 |
Bu yapılandırma ayarlarının belirli MSBuild özellikleri yoktur. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
İpucu
runtimeconfig.json seçeneğini ayarlıysanız, ondalık bir değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıysanız onaltılık bir değer belirtin. Örneğin, 200 mebibayt (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 olabilir.
Nesne başına yığın sabit sınır yüzdeleri
GC'nin yığın sabit sınırı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).
- ,
DOTNET_GCHeapHardLimitSOHPercentveya ayarlarından herhangi biriDOTNET_GCHeapHardLimitLOHPercentiçin bir değer belirtirseniz veDOTNET_GCHeapHardLimitPOHPercentiçinDOTNET_GCHeapHardLimitSOHPercentde bir değer belirtmenizDOTNET_GCHeapHardLimitLOHPercentgerekir. Aksi takdirde çalışma zamanı başlatılamaz. - ,
DOTNET_GCHeapHardLimitSOHveDOTNET_GCHeapHardLimitLOHbelirtilirseDOTNET_GCHeapHardLimitPOHbu ayarlar yoksayılır. - 1 değeri, GC'nin bu nesne yığını için toplam fiziksel belleğin %1'ini kullandığı anlamına gelir.
- Her değer sıfırdan büyük ve 100'den küçük olmalıdır. 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 | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitSOHPercent |
ondalık değer | .NET 5 |
| Ortam değişkeni | DOTNET_GCHeapHardLimitSOHPercent |
onaltılık değer | .NET 6 |
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitLOHPercent |
ondalık değer | .NET 5 |
| Ortam değişkeni | DOTNET_GCHeapHardLimitLOHPercent |
onaltılık değer | .NET 6 |
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitPOHPercent |
ondalık değer | .NET 5 |
| Ortam değişkeni | DOTNET_GCHeapHardLimitPOHPercent |
onaltılık değer | .NET 6 |
Bu yapılandırma ayarlarının belirli MSBuild özellikleri yoktur. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
İpucu
runtimeconfig.json seçeneğini ayarlıysanız, ondalık bir değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıysanız onaltılık bir değer belirtin. Örneğin, yığın kullanımını %30 ile sınırlamak için değerler JSON dosyası için 30, ortam değişkeni için 0x1E veya 1E olur.
Büyük sayfalar
- Yığın sabit sınırı ayarlandığında büyük sayfaların kullanılıp kullanılmayacağını belirtir.
- Varsayılan: Yığın sabit sınırı ayarlandığında büyük sayfaları kullanmayın. Bu, değerini
0olarak ayarlamakla eşdeğerdir. - Bu deneysel bir ayardır.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | Yok | Yok | Yok |
| Ortam değişkeni | DOTNET_GCLargePages |
0 -sakat1 -Etkin |
.NET 6 |
Bölge aralığı
.NET 7'den başlayarak GC yığını, 64 bit Windows ve Linux için fiziksel gösterimini segmentlerden bölgelere geçirmiştir. (Daha fazla bilgi için Maoni Stephens'ın blog makalesine bakın.) Bu değişiklikle, GC başlatma sırasında bir dizi sanal bellek ayırır. Bunun işleme değil yalnızca bellek ayırdığını unutmayın (GC yığın boyutu kaydedilmiş bellektir). Bu yalnızca GC yığınının işleyebileceği maksimum aralığı tanımlayan bir aralıktır. Çoğu uygulamanın neredeyse bu kadar işlemesi gerekmez.
Başka yapılandırmanız yoksa ve bellek kısıtlanmış bir ortamda çalışmıyorsanız (bu da bazı GC yapılandırmalarının ayarlanmasına neden olabilir), varsayılan olarak 256 GB ayrılmıştır. Kullanılabilir fiziksel belleğiniz 256 GB'tan fazlaysa, bu miktarın iki katı olur.
Yığın başına sabit sınırlar ayarlanırsa, rezerv aralığı toplam sabit sınırla aynıdır. Tek bir sabit sınır yapılandırması ayarlanırsa, bu aralık bu tutarın beş katıdır.
Bu aralık toplam sanal bellek miktarıyla sınırlıdır. Normalde 64 bit'te bu hiçbir zaman sorun olmaz, ancak bir işlemde ayarlanmış bir sanal bellek sınırı olabilir. Bu aralık, bu miktarın yarısıyla sınırlıdır. Örneğin, yapılandırmayı HeapHardLimit 1 GB olarak ayarladıysanız ve işlemde 4 GB sanal bellek sınırı ayarlandıysa, bu aralık min (5x1GB, 4GB/2)2 GB'tır.
Bu aralığın GC.GetConfigurationVariables() değerini adı GCRegionRangealtında görmek için API'yi kullanabilirsiniz. Çalışma zamanı başlatma sırasında alırsanız E_OUTOFMEMORY ve bunun bu aralığı ayırmasından kaynaklanıp kaynaklanmadığını görmek istiyorsanız GC başlatma sırasında Windows üzerinde ile VirtualAlloc veya MEM_RESERVE Linux üzerinde ile mmap çağrısına bakın PROT_NONE ve OOM'nin bu çağrıdan olup olmadığını görün. Bu ayırma çağrısı başarısız olursa, bunu aşağıdaki yapılandırma ayarları aracılığıyla değiştirebilirsiniz. Rezervasyon tutarına ilişkin öneri, GC yığınınızın kabul edilen boyutunun iki ile beş katıdır. Senaryonuz çok fazla büyük ayırma yapmazsa (bu, UOH üzerindeki herhangi bir ayırma olabilir veya UOH bölge boyutundan büyük olabilir), işlenen boyutun iki katı güvenli olmalıdır. Aksi takdirde, daha büyük bölgelere yer açmak için çok sık tam sıkıştırmalı GC'lere neden olmayacak şekilde büyütmek isteyebilirsiniz. GC yığınınızın işlenen boyutunu bilmiyorsanız, bunu işleminizde kullanılabilir fiziksel bellek miktarının iki katı olarak ayarlayabilirsiniz.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.RegionRange |
ondalık değer | .NET 10 |
| Ortam değişkeni | DOTNET_GCRegionRange |
onaltılık değer | .NET 7 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Bölge boyutu
.NET 7'den başlayarak GC yığını, 64 bit Windows ve Linux için fiziksel gösterimini segmentlerden bölgelere geçirmiştir. (Daha fazla bilgi için Maoni Stephens'ın blog makalesine bakın.) Varsayılan olarak, her bölge SOH için 4 MB'tır. UOH (LOH ve POH) için bu, SOH bölge boyutunun sekiz katıdır. SOH bölge boyutunu değiştirmek için bu yapılandırmayı kullanabilirsiniz ve UOH bölgeleri buna göre ayarlanır.
Bölgeler yalnızca gerektiğinde ayrılır, bu nedenle genel olarak bölge boyutu konusunda endişelenmeniz gerekmez. Ancak, bu boyutu ayarlamak isteyebileceğiniz iki durum vardır:
- Çok küçük GC yığınlarına sahip işlemler için bölge boyutunun daha küçük olması, GC'nin kendi muhasebesinden yerel bellek kullanımı için yararlıdır. Öneri 1 MB'tır.
- Linux'ta bellek eşlemelerinin sayısını azaltmanız gerekiyorsa bölge boyutunu 32 MB gibi daha büyük olacak şekilde değiştirebilirsiniz.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.RegionSize |
ondalık değer | .NET 10 |
| Ortam değişkeni | DOTNET_GCRegionSize |
onaltılık değer | .NET 7 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Yüksek bellek yüzdesi
Bellek yükü, kullanılan fiziksel belleğin yüzdesiyle gösterilir. Varsayılan olarak, fiziksel bellek yükü %90'a ulaştığında, disk belleğini önlemek için çöp toplama işlemleri tam ve sıkıştırma konusunda daha agresif hale gelir. Bellek yükü %90'ın altında olduğunda GC, daha kısa duraklamalara sahip olan ancak toplam yığın boyutunu çok azaltmayan tam çöp koleksiyonları için arka plan koleksiyonlarını tercih eder. Önemli miktarda belleğe (80 GB veya daha fazla) sahip makinelerde varsayılan yük eşiği %90 ile %97 arasındadır.
Yüksek bellek yükü eşiği, ortam değişkeni veya DOTNET_GCHighMemPercent JSON yapılandırma ayarı tarafından System.GC.HighMemoryPercent ayarlanabilir. Yığın boyutunu denetlemek istiyorsanız eşiği ayarlamayı göz önünde bulundurun. Örneğin, 64 GB belleğe sahip bir makinedeki baskın işlem için GC'nin kullanılabilir belleğin %10'unu içerdiğinde tepki vermeye başlaması mantıklıdır. Ancak, yalnızca 1 GB bellek tüketen bir işlem gibi daha küçük işlemler için GC, kullanılabilir belleğin %10'undan daha azı ile rahatça çalıştırılabilir. Bu küçük işlemler için eşiği daha yüksek ayarlamayı göz önünde bulundurun. Öte yandan, daha büyük işlemlerin daha küçük yığın boyutlarına sahip olmasını istiyorsanız (yeterli sayıda fiziksel bellek olduğunda bile), bu eşiğin düşürülerek GC'nin yığının sıkıştırılması için daha erken tepki vermesi etkili bir yoldur.
Not
Bir kapsayıcıda çalışan işlemler için GC, kapsayıcı sınırına göre fiziksel belleği dikkate alır.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HighMemoryPercent |
ondalık değer | .NET 5 |
| Ortam değişkeni | DOTNET_GCHighMemPercent |
onaltılık değer | .NET 6 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
İpucu
runtimeconfig.json seçeneğini ayarlıysanız, ondalık bir değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıysanız onaltılık bir değer belirtin. Örneğin, yüksek bellek eşiğini %75 olarak ayarlamak için değerler JSON dosyası için 75, ortam değişkeni için 0x4B veya 4B olabilir.
VM'leri koruma
- Silinmesi gereken kesimlerin gelecekte kullanmak üzere bekleme listesine mi yerleştirileceği yoksa işletim sistemine mi (OS) geri gönderileceği yapılandırılır.
- Varsayılan: Kesimleri işletim sistemine geri bırakın. Bu, değerini
falseolarak ayarlamakla eşdeğerdir.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.RetainVM |
false - işletim sistemine yayıntrue - beklemeye |
.NET Core 1.0 |
| MSBuild özelliği | RetainVMGarbageCollection |
false - işletim sistemine yayıntrue - beklemeye |
.NET Core 1.0 |
| Ortam değişkeni | DOTNET_GCRetainVM |
0 - işletim sistemine yayın1 - beklemeye |
.NET 6 |
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.RetainVM": true
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.RetainVM": true
}
}
Proje dosyası:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
</Project>
Bellek tasarrufu
- Daha sık çöp toplama ve muhtemelen daha uzun duraklatma süreleri pahasına bellek tasarrufu yapmak için çöp toplayıcıyı yapılandırır.
- Varsayılan değer 0'dır, bu hiçbir değişiklik anlamına gelir.
- Varsayılan değer 0'ın yanı sıra, 1 ile 9 (dahil) arasındaki değerler de geçerlidir. Değer ne kadar yüksek olursa, atık toplayıcı bellek tasarrufu yapmaya ve böylece yığını küçük tutmaya çalışır.
- Değer sıfır değilse, çok fazla parçalanma varsa büyük nesne yığını otomatik olarak sıkıştırılır.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.ConserveMemory |
0 - 9 |
.NET 6 |
| Ortam değişkeni | DOTNET_GCConserveMemory |
0 -9 |
.NET 6 |
| .NET Framework için app.config | GCConserveMemory | 0 -9 |
.NET Framework 4.8 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnek app.config dosyası:
<configuration>
<runtime>
<GCConserveMemory enabled="5"/>
</runtime>
</configuration>
İpucu
Hangi değerin sizin için en uygun olduğunu görmek için farklı sayılarla denemeler yapın. 5 ile 7 arasında bir değerle başlayın.
Sunucu GC için kaynak kullanımını yönetme
Aşağıdaki ayarlar Sunucu GC iş parçacıklarının sayısını ve çekirdeklere nasıl bağlandıklarını/nasıl etkilediklerini etkiler. İş İstasyonu GC üzerinde hiçbir etkisi yoktur.
İlk 3 ayar hakkında daha fazla bilgi için bkz. İş istasyonu ve sunucu GC blog girdisi arasında orta zemin .
Yığın sayısı
- Çöp toplayıcı tarafından oluşturulan yığın sayısını sınırlar.
- Yalnızca sunucu çöp toplama için geçerlidir.
- GC işlemci benzitesi etkinse (Tam olarak hangi işlemcilerin onayleneceğini belirtmek için affinitize maskesi veya affinitize aralıkları ayarlarını kullanın.)
- GC işlemci benzitesi devre dışı bırakılırsa, bu ayar GC yığınlarının sayısını sınırlar.
- Daha fazla bilgi için bkz . GCHeapCount açıklamaları.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapCount |
ondalık değer | .NET Core 3.0 |
| Ortam değişkeni | DOTNET_GCHeapCount |
onaltılık değer | .NET 6 |
| .NET Framework için app.config | GCHeapCount | ondalık değer | .NET Framework 4.6.2 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapCount": 16
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.HeapCount": 16
}
}
İpucu
runtimeconfig.json seçeneğini ayarlıysanız, ondalık bir değer belirtin. Seçeneği bir ortam değişkeni olarak ayarlıysanız onaltılık bir değer belirtin. Örneğin, yığın sayısını 16 ile sınırlamak için değerler JSON dosyası için 16, ortam değişkeni için 0x10 veya 10 olur.
Affinitize
- atık toplama iş parçacıklarının işlemcilerle ilişkilendirilip birleştirmeyeceğini belirtir. Gc iş parçacığını affinitize etmek, yalnızca belirli BIR CPU üzerinde çalışabileceği 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: İşlemcilerle atık toplama iş parçacıklarını affinitize edin. Bu, değerini
falseolarak ayarlamakla eşdeğerdir.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.NoAffinitize |
false - affinitizetrue - affinitize etmeyin |
.NET Core 3.0 |
| Ortam değişkeni | DOTNET_GCNoAffinitize |
0 - affinitize1 - affinitize etmeyin |
.NET 6 |
| .NET Framework için app.config | GCNoAffinitize |
false - affinitizetrue - affinitize etmeyin |
.NET Framework 4.6.2 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.NoAffinitize": true
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.NoAffinitize": true
}
}
Maskeyi affinitize edin
- Çöp toplayıcı iş parçacıklarının kullanması gereken tam işlemcileri belirtir.
- GC işlemci benzitesi devre dışı bırakılırsa, bu ayar yoksayılır.
- Yalnızca sunucu çöp toplama için geçerlidir.
- Değer, işlem için kullanılabilen işlemcileri tanımlayan bir bit maskesidir. Örneğin, ikili gösteriminde 1023 ondalık değeri (veya 0x3FF onaltılık değeri veya ortam değişkenini kullanıyorsanız 3FF) 0011 1111 1111'dir. Bu, ilk 10 işlemcinin kullanılacağını belirtir. Sonraki 10 işlemciyi (yani 10-19) belirtmek için, 1111 1111 1100 0000 0000 ikili değerine eşdeğer olan 1047552 ondalık değerini (veya 0xFFC00 veya FFC00'ün onaltılık değerini) belirtin.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapAffinitizeMask |
ondalık değer | .NET Core 3.0 |
| Ortam değişkeni | DOTNET_GCHeapAffinitizeMask |
onaltılık değer | .NET 6 |
| .NET Framework için app.config | GCHeapAffinitizeMask | ondalık değer | .NET Framework 4.6.2 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
Aralıkları affinitize edin
- Çöp toplayıcı iş parçacıkları için kullanılacak işlemcilerin listesini belirtir.
- Bu ayar System.GC.HeapAffinitizeMask'a benzer, ancak 64'ten fazla işlemci belirtmenize izin verir.
- Windows işletim sistemleri için işlemci numarasını veya aralığını ilgili CPU grubuyla önek olarak ekleyin; örneğin, "0:1-10,0:12,1:50-52,1:7". Aslında 1'den fazla CPU grubunuz yoksa bu ayarı kullanamazsınız. Affinitize maske ayarını kullanmanız gerekir. Ve belirttiğiniz sayılar bu grubun içindedir, yani = 64 olamaz >.
- CPU grubu kavramının mevcut olmadığı Linux işletim sistemlerinde, aynı aralıkları belirtmek için hem bu ayarı hem de Affinitize maskesi ayarını kullanabilirsiniz. "0:1-10" yerine "1-10" belirtin çünkü grup dizini belirtmeniz gerekmez.
- GC işlemci benzitesi 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'ın blogundaki 64 CPU'ya sahip > makinelerde GC için CPU yapılandırmasını daha iyi hale getirme bölümüne bakın.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapAffinitizeRanges |
İşlemci numaralarının veya işlemci sayı aralıklarının virgülle ayrılmış listesi. Unix örneği: "1-10,12,50-52,70" Windows örneği: "0:1-10,0:12,1:50-52,1:7" |
.NET Core 3.0 |
| Ortam değişkeni | DOTNET_GCHeapAffinitizeRanges |
İşlemci numaralarının veya işlemci sayı aralıklarının virgülle ayrılmış listesi. Unix örneği: "1-10,12,50-52,70" Windows örneği: "0:1-10,0:12,1:50-52,1:7" |
.NET 6 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Örnekler
runtimeconfig.json dosyası:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:7"
}
}
}
runtimeconfig.template.json dosyası:
{
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:7"
}
}
CPU grupları
Çöp toplayıcının CPU gruplarını kullanıp kullanmayacağını yapılandırılır.
Bir 64 bit Windows bilgisayarda birden çok CPU grubu olduğunda, yani 64'ten fazla işlemci olduğunda, bu öğe etkinleştirildiğinde tüm CPU grupları arasında çöp toplama genişletilir. Çöp toplayıcı, yığınları oluşturmak ve dengelemek için tüm çekirdekleri kullanır.
Not
Bu yalnızca Windows kavramıdır. Eski Windows sürümlerinde, Windows bir işlemi bir CPU grubuyla sınırlandırmıştı. Bu nedenle GC, birden çok CPU grubunu etkinleştirmek için bu ayarı kullanmadığınız sürece yalnızca bir CPU grubu kullanmıştı. Bu işletim sistemi sınırlaması Windows 11 ve Server 2022'de kaldırıldı. Ayrıca, .NET 7'den başlayarak GC, Windows 11 veya Server 2022'de çalışırken varsayılan olarak tüm CPU gruplarını kullanır.
Yalnızca 64 bit Windows işletim sistemlerinde sunucu çöp toplama için geçerlidir.
Varsayılan: GC, CPU grupları arasında genişletilmez. Bu, değerini
0olarak ayarlamakla eşdeğerdir.Daha fazla bilgi için Maoni Stephens'ın blogundaki 64 CPU'ya sahip > makinelerde GC için CPU yapılandırmasını daha iyi hale getirme bölümüne bakın.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.CpuGroup |
false -sakattrue -Etkin |
.NET 5 |
| Ortam değişkeni | DOTNET_GCCpuGroup |
0 -sakat1 -Etkin |
.NET 6 |
| .NET Framework için app.config | GCCpuGroup |
false -sakattrue -Etkin |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Not
ortak dil çalışma zamanını (CLR) iş parçacığı havuzundan iş parçacıklarını tüm CPU gruplarına dağıtacak şekilde yapılandırmak için Thread_UseAllCpuGroups öğesi seçeneğini etkinleştirin. .NET Core uygulamaları için ortam değişkeninin DOTNET_Thread_UseAllCpuGroups1değerini olarak ayarlayarak bu seçeneği etkinleştirebilirsiniz.
Uygulama boyutlarına dinamik uyarlama (DATAS)
VERİLerİ etkinleştirme veya devre dışı bırakma
- Çöp toplayıcıyı DATAS kullanacak şekilde yapılandırılır. DATAS, uygulama belleği gereksinimlerine uyarlanmıştır; bu da uygulama yığını boyutunun uzun ömürlü veri boyutuyla kabaca orantılı olması gerektiği anlamına gelir.
- .NET 9'dan başlayarak varsayılan olarak etkindir.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| Ortam değişkeni | DOTNET_GCDynamicAdaptationMode |
1 -Etkin0 -sakat |
.NET 8 |
| MSBuild özelliği | GarbageCollectionAdaptationMode |
1 -Etkin0 -sakat |
.NET 8 |
| runtimeconfig.json | System.GC.DynamicAdaptationMode |
1 -Etkin0 -sakat |
.NET 8 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
Hedef TCP
DATAS, aktarım hızı üzerindeki bellek maliyeti ölçümü olarak Aktarım Hızı Maliyet Yüzdesi'ni (TCP) kullanır. Hem GC duraklamalarını hem de ne kadar ayırmanın beklemesi gerekenleri dikkate alır. Genellikle GC duraklatmalar baskındır, bu nedenle bu maliyeti yaklaşık olarak ayarlamak için "GC'de duraklatma süresini%" kullanabilirsiniz. Ayırma bekleme süresinin hakim olabileceği iki geçici durum vardır:
- Bir işlem başladığında, DATAS her zaman bir yığınla başlar. Bu nedenle, ayırmaya yetecek kadar iş parçacığı varsa beklemeler yaşarlar.
- İş yükü daha hafiften daha ağıra değiştiğinde, örneğin yoğun saatler başladığında, iş parçacıkları ayırma işlemi bu süre boyunca beklemelerle karşılaşabilir. Bunun nedeni yığın sayısının artırılması için birkaç GC'nin gerekli olmasıdır.
DATAS, varsayılan TCP olarak 2% kullanır ve bu ayarı ayarlayabilirsiniz. Yüzde olarak yorumlanan bir tamsayıdır, örneğin 5, hedef TCP'nin 5%olacağı anlamına gelir.
| Ayar adı | Değerler | Sürüm kullanıma sunulmuştur | |
|---|---|---|---|
| runtimeconfig.json | System.GC.DTargetTCP |
ondalık değer | .NET 9 |
| Ortam değişkeni | DOTNET_GCDTargetTCP |
onaltılık değer | .NET 9 |
Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir RuntimeHostConfigurationOption MSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.
0. Nesil maksimum bütçe ayarları
0. nesil bütçenin ayarlanması, DATAS'ın uygulama boyutlarına uyum sağlamak için kullandığı temel öğelerden biridir. DATAS, uygulama boyutunun bir işlevi olarak toplam 0. nesil bütçe için BCD (DATAS aracılığıyla Hesaplanan Bütçe) adlı üst eşiği tanımlar. Çarpanı hesaplamak için formül aşağıdaki gibidir:
$$ f(\text{application_size_in_MB}) = \frac{20 - \text{conserve_memory}}{\sqrt{\text{application_size_in_MB}}} $$
Daha sonra formül, uygulama boyutuna MB olarak uygulanmadan önce en yüksek ve en düşük değerle sıkıştırılır. Bellek tasarrufu ayarı belirtilmezse, DATAS varsayılan olarak 5 kullanır. En büyük ve en düşük değer varsayılan olarak sırasıyla 10 ve 0,1'tir.
Örneğin, uygulama boyutu 1 GB ise, formül hesaplar (20 - 5) / sqrt (1000) = 0.474. 10 ile 0,1 arasında olduğundan sıkıştırmanın etkisi yoktur. Bu, toplam 0. nesil bütçesinin 47,4% 1 GB olduğu ve 474 MB olduğu anlamına gelir. Uygulama boyutu 1 MB ise, formül 15'i hesaplar ve 10'a ayarlanır ve bu da izin verilen toplam 0. nesil bütçesinin 10 MB olduğu anlamına gelir.
Formülün hesaplayacaklarını ayarlamak ve sıkıştırma değerlerini değiştirmek için üç ayar sağlanır:
Hesaplayana
fuygulanacak yüzde.Ayar adı Değerler Sürüm kullanıma sunulmuştur runtimeconfig.json System.GC.DGen0GrowthPercentondalık değer .NET 10 Ortam değişkeni DOTNET_GCDGen0GrowthPercentonaltılık değer .NET 10 Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir
RuntimeHostConfigurationOptionMSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.Dolayısıyla 0,474 hesaplarsa
fve bu ayar 200 ise, çarpan sıkıştırma uygulanmadan önce olur0.474 * 200% = 0.948.Permil'deki maksimum sıkıştırma değeri.
Ayar adı Değerler Sürüm kullanıma sunulmuştur runtimeconfig.json System.GC.DGen0GrowthMaxFactorondalık değer .NET 10 Ortam değişkeni DOTNET_GCDGen0GrowthMaxFactoronaltılık değer .NET 10 Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir
RuntimeHostConfigurationOptionMSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.Bu değer 20000 ise, maksimum sıkıştırma değeri olduğu
20000 * 0.001 = 20anlamına gelir.Permil içindeki minimum sıkıştırma değeri.
Ayar adı Değerler Sürüm kullanıma sunulmuştur runtimeconfig.json System.GC.DGen0GrowthMinFactorondalık değer .NET 10 Ortam değişkeni DOTNET_GCDGen0GrowthMinFactoronaltılık değer .NET 10 Bu yapılandırma ayarı belirli bir MSBuild özelliğine sahip değil. Ancak, bunun yerine bir
RuntimeHostConfigurationOptionMSBuild öğesi ekleyebilirsiniz. özniteliğinin ayar adını kullanın. Bir örnek için bkz . MSBuild özellikleri.Bu değer 200 ise, en düşük sıkıştırma değeri olur
200 * 0.001 = 0.2.