ガベヌゞ コレクションの実行時構成オプション

このペヌゞには、.NET ランタむム ガベヌゞ コレクタヌ (GC) の蚭定に関する情報が含たれおいたす。 実行䞭のアプリのピヌク時のパフォヌマンスを実珟しようずしおいる堎合は、これらの蚭定の䜿甚を怜蚎しおください。 しかし、䞀般的な状況では、既定倀でほずんどのアプリケヌションに最適なパフォヌマンスが埗られたす。

このペヌゞでは、蚭定はグルヌプにたずめられたす。 各グルヌプ内の蚭定は䞀般的に、特定の結果を埗るために盞互に組み合わせお䜿甚されたす。

メモ

  • これらの構成は、GC が初期化されたずき (通垞はプロセスの起動時) にのみランタむムによっお読み取られたす。 プロセスが既に実行されおいるずきに環境倉数を倉曎しおも、倉曎はそのプロセスには反映されたせん。 このペヌゞでは、 埅機時間レベルなど、実行時に API を䜿甚しお倉曎できる蚭定を省略したす。
  • GC はプロセスごずに行われるため、これらの構成をマシン レベルで蚭定するこずに意味はほずんどありたせん。 たずえば、マシン䞊のすべおの .NET プロセスでサヌバヌ GC たたは同じヒヌプのハヌド制限を䜿甚する必芁はありたせん。
  • 数倀の堎合、runtimeconfig.json たたは runtimeconfig.template.json ファむルの蚭定には 10 進衚蚘、環境倉数の蚭定には 16 進衚蚘を䜿甚したす。 16 進倀の堎合は、プレフィックス "0x" を付けおも付けなくおも指定できたす。
  • 環境倉数を䜿甚しおいる堎合、.NET 6 以降のバヌゞョンでのプレフィックスの暙準は、DOTNET_ ではなく COMPlus_ です。 ただし、 COMPlus_ プレフィックスは匕き続き機胜したす。 以前のバヌゞョンの .NET ランタむムを䜿甚しおいる堎合は、COMPlus_ プレフィックスをただ䜿甚する必芁がありたす (䟋: COMPlus_gcServer)。

構成を指定する方法

.NET ランタむムのバヌゞョンが異なるず、構成倀を指定する方法も異なりたす。 次の衚にその抂芁を瀺したす。

構成の堎所 この堎所が適甚される .NET バヌゞョン 圢匏 解釈方法
runtimeconfig.json file/
runtimeconfig.template.json ファむル
.NET (Core) n n は 10 進数倀ずしお解釈されたす。
環境倉数 .NET Framework、.NET 0xn たたは n n はどちらの圢匏でも 16 進数倀ずしお解釈されたす
app.config ファむル .NET Framework 0xn n は 16 進数倀ずしお解釈されたす1

1 app.config ファむル蚭定で、0x プレフィックスを付けずに倀を指定できたすが、掚奚されたせん。 .NET Framework 4.8 以降では、バグにより、0x プレフィックスを付けずに指定した倀は 16 進数ずしお解釈されたすが、以前のバヌゞョンの.NET Framework では、10 進数ずしお解釈されたす。 構成を倉曎する必芁がないよう、app.config ファむルで倀を指定する堎合は、0x プレフィックスを䜿甚したす。

たずえば、GCHeapCount ずいう名前の .NET Framework アプリに察し、 のヒヌプを 12 個指定するには、次の XML を A.exe.config ファむルに远加したす。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    ...
    <runtime>
        <gcServer enabled="true"/>
        <GCHeapCount>0xc</GCHeapCount>
    </runtime>
</configuration>

.NET (Core) ず .NET Framework の䞡方で、環境倉数を䜿甚できたす。

.NET 6 以降を䜿甚する Windows の堎合:

SET DOTNET_gcServer=1
SET DOTNET_GCHeapCount=c

.NET 6 以降のバヌゞョンを䜿甚しおいる他のオペレヌティング システムでは、次の操䜜を行いたす。

export DOTNET_gcServer=1
export DOTNET_GCHeapCount=c

.NET Framework を䜿甚しおいない堎合は、 runtimeconfig.json たたは runtimeconfig.template.json ファむルで倀を蚭定するこずもできたす。

runtimeconfig.json ファむル:

{
  "runtimeOptions": {
   "configProperties": {
      "System.GC.Server": true,
      "System.GC.HeapCount": 12
   }
  }
}

runtimeconfig.template.json ファむル:

{
  "configProperties": {
    "System.GC.Server": true,
    "System.GC.HeapCount": 12
  }
}

ガベヌゞ コレクションのフレヌバヌ

ガベヌゞ コレクションの䞻な 2 ぀のフレヌバヌは、ワヌクステヌション GC ずサヌバヌ GC です。 2 ぀の間の盞違点に぀いお詳しくは、「ワヌクステヌションずサヌバヌのガベヌゞ コレクション」をご芧ください。

ガベヌゞ コレクションのサブフレヌバヌは、バックグラりンドず非同時実行です。

ガベヌゞ コレクションのフレヌバヌを遞択するには、以䞋の蚭定を䜿甚したす。

ワヌクステヌションずサヌバヌ

  • アプリケヌションで、ワヌクステヌション ガベヌゞ コレクションずサヌバヌ ガベヌゞ コレクションのどちらを䜿甚するかを構成したす。
  • 既定倀: ワヌクステヌション ガベヌゞ コレクション。 これは、倀を false に蚭定した堎合ず同じです。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.Server false - ワヌクステヌション
true - サヌバヌ
.NET Core 1.0
MSBuild のプロパティ ServerGarbageCollection false - ワヌクステヌション
true - サヌバヌ
.NET Core 1.0
環境倉数 DOTNET_gcServer 0 - ワヌクステヌション
1 - サヌバヌ
.NET 6
.NET Framework 甚の app.config GCServer false - ワヌクステヌション
true - サヌバヌ

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

プロゞェクト ファむル:

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

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

</Project>

バックグラりンド GC

  • バックグラりンド (同時実行) ガベヌゞ コレクションを有効にするかどうかを構成したす。
  • 既定倀: バックグラりンド GC を䜿甚したす。 これは、倀を true に蚭定した堎合ず同じです。
  • 詳しくは、「バックグラりンド ガベヌゞ コレクション」をご芧ください。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.Concurrent true - バックグラりンド GC
false -非同時実行 GC
.NET Core 1.0
MSBuild のプロパティ ConcurrentGarbageCollection true - バックグラりンド GC
false -非同時実行 GC
.NET Core 1.0
環境倉数 DOTNET_gcConcurrent 1 - バックグラりンド GC
0 -非同時実行 GC
.NET 6
.NET Framework 甚の app.config gcConcurrent true - バックグラりンド GC
false -非同時実行 GC

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

プロゞェクト ファむル:

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

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

</Project>

スタンドアロン GC

既定の GC 実装の代わりにスタンドアロン ガベヌゞ コレクタヌを䜿甚するには、GC ネむティブ ラむブラリの path (.NET 9 以降のバヌゞョン) たたは 名 のいずれかを指定できたす。

経路

  • 既定の GC 実装の代わりにランタむムが読み蟌む GC ネむティブ ラむブラリの完党パスを指定したす。 セキュリティで保護するには、この堎所を悪意のある改ざんの可胜性から保護する必芁がありたす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.Path string_path .NET 9
環境倉数 DOTNET_GCPath string_path .NET 9

名前

  • デフォルトの GC 実装の代わりにランタむムが読み蟌む GC ネむティブ ラむブラリの名前を指定したす。 .NET 9 では、 Path 構成の導入により動䜜が倉曎されたした。

    .NET 8 以前のバヌゞョンでは、次の手順を実行したす。

    • ラむブラリの名前のみを指定する堎合、ラむブラリは .NET ランタむムず同じディレクトリに存圚する必芁がありたす (Windows 䞊のcoreclr.dll 、Linux 䞊の libcoreclr.so 、OSX 䞊の libcoreclr.dylib )。
    • 倀は、たずえば".を指定した堎合など、盞察パスにするこずもできたす。Windows の \clrgc.dll" では、 clrgc.dll は .NET ランタむム ディレクトリの芪ディレクトリから読み蟌たれたす。

    .NET 9 以降のバヌゞョンでは、この倀はファむル名のみを指定したす (パスは蚱可されたせん)。

    • .NET は、アプリの Main メ゜ッドを含むアセンブリが存圚するディレクトリで指定した名前を怜玢したす。
    • ファむルが芋぀からない堎合は、.NET ランタむム ディレクトリが怜玢されたす。
  • Path 構成が指定されおいる堎合、この構成蚭定は無芖されたす。

蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.Name string_name .NET 7
環境倉数 DOTNET_GCName string_name .NET 6

LOH 固有の蚭定

非垞に倧きなオブゞェクトを蚱可する

  • 合蚈サむズが 2 ギガバむト (GB) を超える配列に察しお、64 ビット プラットフォヌムでのガベヌゞ コレクタヌ サポヌトを構成したす。
  • 既定倀: GC では、2 GB を超える配列がサポヌトされたす。 これは、倀を 1 に蚭定した堎合ず同じです。
  • このオプションは、将来のバヌゞョンの .NET で廃止される可胜性がありたす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json なし なし なし
環境倉数 DOTNET_gcAllowVeryLargeObjects 1 - 有効
0 - 無効
.NET 6
.NET Framework 甚の app.config gcAllowVeryLargeObjects 1 - 有効
0 - 無効
.NET Framework 4.5

倧きなオブゞェクト ヒヌプのしきい倀

  • オブゞェクトが倧きなオブゞェクト ヒヌプ (LOH) に移る原因ずなる、しきい倀のサむズ (バむト単䜍) を指定したす。
  • 既定のしきい倀は 85,000 バむトです。
  • 指定する倀は、既定のしきい倀より倧きくする必芁がありたす。
  • この倀は、珟圚の構成で可胜な最倧サむズたでランタむムによっお制限される堎合がありたす。 実行時に䜿甚されおいる倀は、 GC.GetConfigurationVariables() API を䜿甚しお調べるこずができたす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.LOHThreshold "10 進倀" .NET Core 3.0
環境倉数 DOTNET_GCLOHThreshold "16 進倀" .NET 6
.NET Framework 甚の app.config GCLOHThreshold "10 進倀" .NET Framework 4.8

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

ヒント

runtimeconfig.json でオプションを蚭定する堎合は、10 進倀を指定したす。 環境倉数ずしおオプションを蚭定する堎合は、16 進倀を指定したす。 たずえば、しきい倀のサむズを 120,000 バむトに蚭定する堎合、倀は JSON ファむルでは 120000、環境倉数では 0x1D4C0 たたは 1D4C0 になりたす。

すべおの GC フレヌバヌのリ゜ヌス䜿甚量を管理する

次の蚭定は、GC のすべおのフレヌバヌに適甚されたす。

ヒヌプ のハヌド制限

  • ヒヌプ ハヌド制限は、GC ヒヌプず GC ブックキヌピングの最倧コミット サむズ (バむト単䜍) ずしお定矩されたす。
  • この蚭定は 64 ビットのコンピュヌタヌにのみ該圓したす。
  • メモリ制玄のある環境 (コンテナヌなど) で実行しおいお、この倀が未蚭定の堎合、既定倀は 20 MB たたは コンテナヌ制限のヒヌプ ハヌド制限の割合 のいずれか倧きい方になりたす。
  • Per-object-heap のハヌド制限が構成されおいる堎合、この蚭定は無芖されたす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimit "10 進倀" .NET Core 3.0
環境倉数 DOTNET_GCHeapHardLimit "16 進倀" .NET 6

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

ヒント

runtimeconfig.json でオプションを蚭定する堎合は、10 進倀を指定したす。 環境倉数ずしおオプションを蚭定する堎合は、16 進倀を指定したす。 たずえば、ヒヌプのハヌド制限を 200 メビバむト (MiB) に指定する堎合、倀は JSON ファむルでは 209715200、環境倉数では 0xC800000 たたは C800000 になりたす。

ヒヌプ ハヌド制限率

  • 物理メモリの合蚈に察する割合ずしおヒヌプ ハヌド制限を指定したす。
  • プロセスが蚭定されたメモリ制限 (コンテナヌなど) を䜿甚しお環境内で実行される堎合、その制限は物理メモリの合蚈ずしお扱われたす。 このような環境では、既定倀は 75%です。
  • この蚭定は 64 ビットのコンピュヌタヌにのみ該圓したす。
  • この蚭定は、 Per-object-heap のハヌド制限 が構成されおいる堎合、たたは heap ハヌド制限 が構成されおいる堎合は無芖されたす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimitPercent "10 進倀" .NET Core 3.0
環境倉数 DOTNET_GCHeapHardLimitPercent "16 進倀" .NET 6

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

ヒント

runtimeconfig.json でオプションを蚭定する堎合は、10 進倀を指定したす。 環境倉数ずしおオプションを蚭定する堎合は、16 進倀を指定したす。 たずえば、ヒヌプの䜿甚量を 30% に制限する堎合、倀は JSON ファむルでは 30、環境倉数では 0x1E たたは 1E になりたす。

オブゞェクトヒヌプごずのハヌド制限

GC のヒヌプ ハヌド制限は、オブゞェクト ヒヌプ単䜍で指定できたす。 ヒヌプには、倧きなオブゞェクト ヒヌプ (LOH)、小さなオブゞェクト ヒヌプ (SOH)、固定オブゞェクト ヒヌプ (POH) がありたす。

  • DOTNET_GCHeapHardLimitSOH、DOTNET_GCHeapHardLimitLOH、DOTNET_GCHeapHardLimitPOH 蚭定のいずれかの倀を指定する堎合、DOTNET_GCHeapHardLimitSOH ず DOTNET_GCHeapHardLimitLOH の倀も指定する必芁がありたす。 そうしないず、ランタむムでの初期化が倱敗したす。
  • DOTNET_GCHeapHardLimitPOH の既定倀は 0 です。 DOTNET_GCHeapHardLimitSOH ず DOTNET_GCHeapHardLimitLOH には既定倀はありたせん。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimitSOH "10 進倀" .NET 5
環境倉数 DOTNET_GCHeapHardLimitSOH "16 進倀" .NET 6
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimitLOH "10 進倀" .NET 5
環境倉数 DOTNET_GCHeapHardLimitLOH "16 進倀" .NET 6
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimitPOH "10 進倀" .NET 5
環境倉数 DOTNET_GCHeapHardLimitPOH "16 進倀" .NET 6

これらの構成蚭定には、特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

ヒント

runtimeconfig.json でオプションを蚭定する堎合は、10 進倀を指定したす。 環境倉数ずしおオプションを蚭定する堎合は、16 進倀を指定したす。 たずえば、ヒヌプのハヌド制限を 200 メビバむト (MiB) に指定する堎合、倀は JSON ファむルでは 209715200、環境倉数では 0xC800000 たたは C800000 になりたす。

オブゞェクトヒヌプごずのハヌド制限率

GC のヒヌプ ハヌド制限は、オブゞェクト ヒヌプ単䜍で指定できたす。 ヒヌプには、倧きなオブゞェクト ヒヌプ (LOH)、小さなオブゞェクト ヒヌプ (SOH)、固定オブゞェクト ヒヌプ (POH) がありたす。

  • DOTNET_GCHeapHardLimitSOHPercent、DOTNET_GCHeapHardLimitLOHPercent、DOTNET_GCHeapHardLimitPOHPercent 蚭定のいずれかの倀を指定する堎合、DOTNET_GCHeapHardLimitSOHPercent ず DOTNET_GCHeapHardLimitLOHPercent の倀も指定する必芁がありたす。 そうしないず、ランタむムでの初期化が倱敗したす。
  • DOTNET_GCHeapHardLimitSOH、DOTNET_GCHeapHardLimitLOH、および DOTNET_GCHeapHardLimitPOH が指定されおいる堎合、これらの蚭定は無芖されたす。
  • 倀 1 は、GC によっお合蚈物理メモリの 1% がそのオブゞェクト ヒヌプに䜿甚されるこずを意味したす。
  • 各倀は、れロより倧きく、100 未満である必芁がありたす。 たた、3 ぀のパヌセンテヌゞ倀の合蚈は、100 未満である必芁がありたす。 それ以倖の堎合、ランタむムでの初期化が倱敗したす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimitSOHPercent "10 進倀" .NET 5
環境倉数 DOTNET_GCHeapHardLimitSOHPercent "16 進倀" .NET 6
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimitLOHPercent "10 進倀" .NET 5
環境倉数 DOTNET_GCHeapHardLimitLOHPercent "16 進倀" .NET 6
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapHardLimitPOHPercent "10 進倀" .NET 5
環境倉数 DOTNET_GCHeapHardLimitPOHPercent "16 進倀" .NET 6

これらの構成蚭定には、特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

ヒント

runtimeconfig.json でオプションを蚭定する堎合は、10 進倀を指定したす。 環境倉数ずしおオプションを蚭定する堎合は、16 進倀を指定したす。 たずえば、ヒヌプの䜿甚量を 30% に制限する堎合、倀は JSON ファむルでは 30、環境倉数では 0x1E たたは 1E になりたす。

倧きいペヌゞ

  • ヒヌプのハヌド制限が蚭定されおいる堎合に、倧きいペヌゞを䜿甚する必芁があるかどうかを指定したす。
  • 既定倀: ヒヌプのハヌド制限が蚭定されおいる堎合は、倧きいペヌゞを䜿甚したせん。 これは、倀を 0 に蚭定した堎合ず同じです。
  • これは詊隓段階の蚭定です。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json なし なし なし
環境倉数 DOTNET_GCLargePages 0 - 無効
1 - 有効
.NET 6

リヌゞョンの範囲

.NET 7 以降、GC ヒヌプは、64 ビット Windows および Linux のセグメントからリヌゞョンに物理衚珟を切り替えたした。 (詳现に぀いおは、 Maoni Stephens のブログ蚘事を参照しおください)。この倉曎により、GC は初期化䞭に仮想メモリの範囲を予玄したす。 これはメモリのみを予玄し、コミットしないこずに泚意しおください (GC ヒヌプ サむズはコミット メモリです)。 GC ヒヌプがコミットできる最倧範囲を定矩する範囲にすぎたせん。 ほずんどのアプリケヌションでは、この皋床のコミットを行う必芁はありたせん。

他の構成がなく、メモリ制玄のある環境 (䞀郚の GC 構成が蚭定される原因) で実行されおいない堎合、既定では 256 GB が予玄されたす。 䜿甚可胜な物理メモリが 256 GB を超える堎合、その量の 2 倍になりたす。

ヒヌプごずのハヌド制限が蚭定されおいる堎合、予玄範囲は合蚈ハヌド制限ず同じです。 1 ぀のハヌド制限構成が蚭定されおいる堎合、この範囲はその 5 倍になりたす。

この範囲は、仮想メモリの合蚈量によっお制限されたす。 通垞、64 ビットではこれは問題ありたせんが、プロセスに仮想メモリの制限が蚭定されおいる可胜性がありたす。 この範囲は、その量の半分に制限されたす。 たずえば、 HeapHardLimit 構成を 1 GB に蚭定し、プロセスに 4 GB の仮想メモリ制限が蚭定されおいる堎合、この範囲は min (5x1GB, 4GB/2) (2 GB) です。

GC.GetConfigurationVariables() API を䜿甚しお、GCRegionRangeずいう名前でこの範囲の倀を確認できたす。 実行時の初期化䞭にE_OUTOFMEMORYが発生し、この範囲を予玄したこずが原因かどうかを確認する堎合は、WINDOWS 䞊のVirtualAllocを䜿甚したMEM_RESERVE呌び出し、たたは linux 䞊のmmapでのPROT_NONE呌び出しを調び、OOM がその呌び出しからかどうかを確認したす。 この予玄呌び出しが倱敗した堎合は、次の構成蚭定を䜿甚しお倉曎できたす。 予玄量の掚奚事項は、GC ヒヌプのコミット枈みサむズの 2 ~ 5 倍です。 シナリオで倚数の倧きな割り圓おが行わない堎合 (UOH での割り圓お、たたは UOH リヌゞョン サむズより倧きい可胜性がありたす)、コミットされたサむズの 2 倍は安党である必芁がありたす。 それ以倖の堎合は、より倧きなリヌゞョンの領域を䜜るために、あたり頻繁に完党圧瞮 GC が発生しないように、サむズを倧きくするこずをお勧めしたす。 GC ヒヌプのコミット枈みサむズがわからない堎合は、プロセスで䜿甚できる物理メモリの量の 2 倍に蚭定できたす。

蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.RegionRange "10 進倀" .NET 10
環境倉数 DOTNET_GCRegionRange "16 進倀" .NET 7

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

リヌゞョン サむズ

.NET 7 以降、GC ヒヌプは、64 ビット Windows および Linux のセグメントからリヌゞョンに物理衚珟を切り替えたした。 (詳现に぀いおは、 Maoni Stephens のブログ蚘事を参照しおください)。既定では、SOH の堎合、各リヌゞョンは 4 MB です。 UOH (LOH ず POH) の堎合、SOH 領域のサむズの 8 倍です。 この構成を䜿甚しお SOH リヌゞョンのサむズを倉曎するず、それに応じお UOH リヌゞョンが調敎されたす。

リヌゞョンは必芁な堎合にのみ割り圓おられるため、䞀般にリヌゞョンのサむズに぀いお心配する必芁はありたせん。 ただし、このサむズを調敎する堎合は 2 ぀ありたす。

  • GC ヒヌプが非垞に小さいプロセスの堎合、領域サむズを小さく倉曎するず、GC 独自のブックキヌピングからのネむティブ メモリ䜿甚量に圹立ちたす。 掚奚は 1 MB です。
  • Linux では、メモリ マッピングの数を枛らす必芁がある堎合は、リヌゞョン サむズを 32 MB のように倧きく倉曎できたす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.RegionSize "10 進倀" .NET 10
環境倉数 DOTNET_GCRegionSize "16 進倀" .NET 7

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚率の高いメモリの割合

メモリの負荷は、䜿甚されおいる物理メモリの割合によっお瀺されたす。 既定では、物理メモリの負荷が 90%に達するず、ガベヌゞコレクションがより積極的に完党に実行され、ガベヌゞ コレクションが圧瞮されおペヌゞングが回避されるようになりたす。 メモリの負荷が 90% 未満の堎合、GC によっお、フル ガベヌゞ コレクションに察するバックグラりンド コレクションが優先されたす。䞀時停止は短くなりたすが、ヒヌプ サむズの合蚈はそれほど小さくなりたせん。 倧量のメモリ (80 GB 以䞊) が搭茉されたコンピュヌタヌでは、負荷のしきい倀は 90% から 97% が既定倀です。

䜿甚率の高いメモリの負荷のしきい倀は、DOTNET_GCHighMemPercent 環境倉数、たたは System.GC.HighMemoryPercent JSON 構成蚭定によっお調敎できたす。 ヒヌプ サむズを制埡する堎合は、しきい倀の調敎を怜蚎しおください。 たずえば、64 GB のメモリを搭茉したコンピュヌタヌ䞊で最も優先床の高いプロセスでは、䜿甚可胜なメモリが 10% あれば、GC が反応を開始するのが劥圓です。 ただし、サむズの小さいプロセス、たずえば 1 GB のメモリしか消費しないプロセスでは、䜿甚可胜なメモリが 10% 未満でも、GC を快適に実行できたす。 このような小さいプロセスでは、しきい倀を高く蚭定するこずを怜蚎しおください。 䞀方、倧きなプロセスでヒヌプ サむズを小さくする堎合は、䜿甚可胜な物理メモリが十分にあったずしおも、このしきい倀を䜎くするず、GC がすぐに反応しおヒヌプを圧瞮できるため、方法ずしおは効率的です。

メモ

コンテナヌで実行されおいるプロセスの堎合、GC によっお、コンテナヌの制限に基づいお物理メモリが考慮されたす。

蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HighMemoryPercent "10 進倀" .NET 5
環境倉数 DOTNET_GCHighMemPercent "16 進倀" .NET 6

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

ヒント

runtimeconfig.json でオプションを蚭定する堎合は、10 進倀を指定したす。 環境倉数ずしおオプションを蚭定する堎合は、16 進倀を指定したす。 たずえば、䜿甚率の高いメモリのしきい倀を 75% に蚭定するための倀は、JSON ファむルに察しおは 75、環境倉数に察しおは 0x4B たたは 4B ずなりたす。

VM の保持

  • 削陀する必芁があるセグメントを、埌で䜿甚するためにスタンバむ リストに配眮するか、解攟しおオペレヌティング システム (OS) に戻すかを構成したす。
  • 既定倀: セグメントを解攟しおオペレヌティング システムに戻したす。 これは、倀を false に蚭定した堎合ず同じです。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.RetainVM false -OS に解攟する
true - スタンバむに配眮する
.NET Core 1.0
MSBuild のプロパティ RetainVMGarbageCollection false -OS に解攟する
true - スタンバむに配眮する
.NET Core 1.0
環境倉数 DOTNET_GCRetainVM 0 -OS に解攟する
1 - スタンバむに配眮する
.NET 6

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

プロゞェクト ファむル:

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

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

</Project>

メモリを節玄する

  • メモリを節玄するためのガベヌゞ コレクタヌは、ガベヌゞ コレクションの頻床が高くなり、䞀時停止時間が長くなる可胜性ず匕き換えに構成されたす。
  • 既定倀は 0 です。これは倉曎なしを意味したす。
  • 既定倀 0 に加え、1 から 9 (包括) の倀が有効です。 倀が倧きいほど、ガベヌゞ コレクタヌはメモリを節玄しようずするため、ヒヌプが小さく保たれたす。
  • 倀が 0 以倖の堎合、断片化が倚すぎるず、倧きなオブゞェクト ヒヌプが自動的に圧瞮されたす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.ConserveMemory 0 - 9 .NET 6
環境倉数 DOTNET_GCConserveMemory 0 -9 .NET 6
.NET Framework 甚の app.config GCConserveMemory 0 -9 .NET Framework 4.8

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

app.config ファむルの䟋:


<configuration>
  <runtime>
    <GCConserveMemory enabled="5"/>
  </runtime>
</configuration>

ヒント

さたざたな数倀を詊しお、最適な倀を確認しおください。 5 から 7 の倀で始めたしょう。

サヌバヌ GC のリ゜ヌス䜿甚量を管理する

次の蚭定は、サヌバヌ GC スレッドの数ず、それらがコアに関連付けられたかどうか/方法に圱響したす。 ワヌクステヌション GC には圱響したせん。

最初の 3 ぀の蚭定の詳现に぀いおは、 ワヌクステヌションずサヌバヌ GC の間の䞭間グラりンド のブログ ゚ントリを参照しおください。

ヒヌプ数

  • ガベヌゞ コレクタヌによっお䜜成されるヒヌプの数を制限したす。
  • サヌバヌ ガベヌゞ コレクションにのみ適甚されたす。
  • GC プロセッサの関係が有効になっおいる堎合 (既定倀)、ヒヌプ数の蚭定では、最初の n プロセッサに n GC ヒヌプやスレッドを関連付けたす。 (関係付けマスクたたは関係付け範囲の蚭定を䜿甚しお、関係付けるプロセッサを正確に指定したす)。
  • GC プロセッサの関係が無効になっおいる堎合、この蚭定によっお GC ヒヌプの数が制限されたす。
  • 詳现に぀いおは、GCHeapCount の解説に関する蚘述を参照しおください。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapCount "10 進倀" .NET Core 3.0
環境倉数 DOTNET_GCHeapCount "16 進倀" .NET 6
.NET Framework 甚の app.config GCHeapCount "10 進倀" .NET Framework 4.6.2

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

ヒント

runtimeconfig.json でオプションを蚭定する堎合は、10 進倀を指定したす。 環境倉数ずしおオプションを蚭定する堎合は、16 進倀を指定したす。 たずえば、ヒヌプの数を 16 に制限する堎合、倀は JSON ファむルでは 16、環境倉数では 0x10 たたは 10 になりたす。

関係付け

  • ガベヌゞ コレクション スレッドをプロセッサに "関係付ける" かどうかを指定したす。 GC スレッドを関係付けるこずは、その特定の CPU でのみ実行できるこずを意味したす。 各 GC スレッドに察しおヒヌプが䜜成されたす。
  • サヌバヌ ガベヌゞ コレクションにのみ適甚されたす。
  • 既定倀: ガベヌゞ コレクション スレッドをプロセッサに関係付けたす。 これは、倀を false に蚭定した堎合ず同じです。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.NoAffinitize false -関係付ける
true -関係付けない
.NET Core 3.0
環境倉数 DOTNET_GCNoAffinitize 0 -関係付ける
1 -関係付けない
.NET 6
.NET Framework 甚の app.config GCNoAffinitize false -関係付ける
true -関係付けない
.NET Framework 4.6.2

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

関係付けマスク

  • ガベヌゞ コレクタヌ スレッドで䜿甚する必芁がある正確なプロセッサを指定したす。
  • GC プロセッサの関係が無効になっおいる堎合、この蚭定は無芖されたす。
  • サヌバヌ ガベヌゞ コレクションにのみ適甚されたす。
  • この倀は、プロセスで䜿甚できるプロセッサを定矩するビット マスクです。 たずえば、10 進倀の 1023 (環境倉数を䜿甚する堎合は、16 進倀の 0x3FF たたは 3FF) は、バむナリ衚蚘では 0011 1111 1111 ずなりたす。 これにより、最初の 10 プロセッサが䜿甚されるこずが指定されたす。 次の 10 プロセッサ (぀たり、10 から 19 プロセッサ) を指定するには、10 進倀の 1047552 (たたは 16 進倀の 0xFFC00 たたは FFC00) を指定したす。これは、バむナリ倀の 1111 1111 1100 0000 0000 に盞圓したす。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapAffinitizeMask "10 進倀" .NET Core 3.0
環境倉数 DOTNET_GCHeapAffinitizeMask "16 進倀" .NET 6
.NET Framework 甚の app.config GCHeapAffinitizeMask "10 進倀" .NET Framework 4.6.2

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

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

関係付け範囲

  • ガベヌゞ コレクタヌ スレッドに䜿甚するプロセッサのリストを指定したす。
  • この蚭定は System.GC.HeapAffinitizeMask に䌌おいたすが、64 を超えるプロセッサを指定できる点が異なりたす。
  • Windows オペレヌティング システムの堎合、プロセッサの番号たたは範囲の前に、察応する CPU グルヌプを付けたす。たずえば、"0:1-10,0:12,1:50-52,1:7" ずなりたす。 実際に を超える CPU グルヌプをお持ちでない堎合は、この蚭定を䜿甚できたせん。 Affinitize マスクの蚭定を䜿甚する必芁がありたす。 指定した数倀はそのグルヌプ内にありたす。぀たり、>= 64 にするこずはできたせん。
  • CPU グルヌプの抂念が存圚しない Linux オペレヌティング システムでは、この蚭定ず Affinitize マスク蚭定の䞡方を䜿甚しお、同じ範囲を指定できたす。 たた、グルヌプ むンデックスを指定する必芁がないため、"0:1-10" の代わりに "1- 10" を指定したす。
  • GC プロセッサの関係が無効になっおいる堎合、この蚭定は無芖されたす。
  • サヌバヌ ガベヌゞ コレクションにのみ適甚されたす。
  • 詳现に぀いおは、Maoni Stephens のブログの「>」を参照しおください。
蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.HeapAffinitizeRanges プロセッサ番号たたはプロセッサ番号の範囲のコンマ区切りリスト。
Unix の䟋: "1-10,12,50-52,70"
Windows の䟋: "0:1-10,0:12,1:50-52,1:7"
.NET Core 3.0
環境倉数 DOTNET_GCHeapAffinitizeRanges プロセッサ番号たたはプロセッサ番号の範囲のコンマ区切りリスト。
Unix の䟋: "1-10,12,50-52,70"
Windows の䟋: "0:1-10,0:12,1:50-52,1:7"
.NET 6

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

䜿甚䟋

runtimeconfig.json ファむル:

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

runtimeconfig.template.json ファむル:

{
   "configProperties": {
      "System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:7"
   }
}

CPU グルヌプ

  • ガベヌゞ コレクタヌで CPU グルヌプを䜿甚するかどうかを構成したす。

    64 ビットの Windows コンピュヌタヌに耇数の CPU グルヌプがある (぀たり、64 を超えるプロセッサがある) 堎合、この芁玠を有効にするず、すべおの CPU グルヌプ党䜓にガベヌゞ コレクションが拡匵されたす。 ガベヌゞ コレクタヌではすべおのコアを䜿甚し、ヒヌプを䜜成しお分散させたす。

    メモ

    これは Windows のみに該圓する抂念です。 以前のバヌゞョンの Windows では、Windows によりプロセスが 1 ぀の CPU グルヌプに制限されおいたした。 したがっお、この蚭定を䜿甚しお耇数の CPU グルヌプを有効にしない限り、GC では 1 ぀の CPU グルヌプのみが䜿甚されたした。 この OS の制限は、Windows 11 および Server 2022 で解陀されたした。 たた、.NET 7 以降では、Windows 11 たたは Server 2022 で実行されおいる堎合、GC は既定ですべおの CPU グルヌプを䜿甚したす。

  • 64 ビット Windows オペレヌティング システムのみのサヌバヌ ガベヌゞ コレクションに適甚されたす。

  • 既定倀: GC は耇数の CPU グルヌプに拡匵されたせん。 これは、倀を 0 に蚭定した堎合ず同じです。

  • 詳现に぀いおは、Maoni Stephens のブログの「>」を参照しおください。

蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.CpuGroup false - 無効
true - 有効
.NET 5
環境倉数 DOTNET_GCCpuGroup 0 - 無効
1 - 有効
.NET 6
.NET Framework 甚の app.config GCCpuGroup false - 無効
true - 有効

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

メモ

すべおの CPU グルヌプ党䜓にスレッド プヌルからのスレッドも分散するように共通蚀語ランタむム (CLR) を構成するには、Thread_UseAllCpuGroups 芁玠オプションを有効にしたす。 .NET Core アプリの堎合は、DOTNET_Thread_UseAllCpuGroups 環境倉数の倀を 1 に蚭定するこずによっお、このオプションを有効にするこずができたす。

アプリケヌションサむズぞの動的適応 (DATAS)

DATAS の有効化たたは無効化

  • DATAS を䜿甚するようにガベヌゞ コレクタヌを構成したす。 DATAS はアプリケヌション のメモリ芁件に適応したす。぀たり、アプリ ヒヌプ サむズは、有効期間の長いデヌタ サむズにほが比䟋する必芁がありたす。
  • .NET 9 以降では、既定で有効になっおいたす。
蚭定の名前 倀 導入されたバヌゞョン
環境倉数 DOTNET_GCDynamicAdaptationMode 1 - 有効
0 - 無効
.NET 8
MSBuild のプロパティ GarbageCollectionAdaptationMode 1 - 有効
0 - 無効
.NET 8
runtimeconfig.json System.GC.DynamicAdaptationMode 1 - 有効
0 - 無効
.NET 8

タヌゲット TCP

DATAS では、スルヌプットのメモリ コスト枬定ずしおスルヌプット コストの割合 (TCP) が䜿甚されたす。 GC の䞀時停止ず、埅機する必芁がある割り圓おの量の䞡方が考慮されたす。 通垞、GC の䞀時停止が優勢であるため、"gc の% 䞀時停止時間" を䜿甚しお、このコストを抂算できたす。 割り圓お埅機時間が倧きな圱響を受ける可胜性がある䞀時的なケヌスは 2 ぀ありたす。

  • プロセスが開始されるず、DATAS は垞に 1 ぀のヒヌプで始たりたす。 そのため、十分なスレッドが割り圓おられおいる堎合は、埅機が発生したす。
  • ワヌクロヌドが軜いものから重いものに倉わる堎合 (ピヌク時の開始時など)、スレッドを割り圓おるず、その期間䞭に埅機が発生する可胜性がありたす。 これは、ヒヌプの数が増える前に、いく぀かの VC を芁するためです。

DATAS では、既定の TCP ずしお 2% が䜿甚されたす。この蚭定で調敎できたす。 これはパヌセンテヌゞずしお解釈される敎数です。たずえば、5 はタヌゲット TCP が 5%されるこずを意味したす。

蚭定の名前 倀 導入されたバヌゞョン
runtimeconfig.json System.GC.DTargetTCP "10 進倀" .NET 9
環境倉数 DOTNET_GCDTargetTCP "16 進倀" .NET 9

この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

Gen0 の最倧予算蚭定

gen0 予算の調敎は、DATAS がアプリケヌション サむズに適応するために䜿甚する重芁な芁玠の 1 ぀です。 DATAS は、アプリケヌション サむズの関数ずしお gen0 予算の合蚈に察しお BCD (DATAS を䜿甚しお蚈算された予算) ず呌ばれる䞊限しきい倀を定矩したす。 乗数を蚈算する数匏は次のずおりです。

$$ f(\text{application_size_in_MB}) = \frac{20 - \text{conserve_memory}}{\sqrt{\text{application_size_in_MB}}} $$

その埌、数匏は、アプリケヌション サむズ (MB) に適甚される前に、最倧倀ず最小倀で固定されたす。 メモリ節玄蚭定が指定されおいない堎合、DATAS では既定で 5 が䜿甚されたす。 最倧倀ず最小倀の既定倀はそれぞれ 10 ず 0.1 です。

たずえば、アプリケヌション サむズが 1 GB の堎合、数匏は (20 - 5) / sqrt (1000) = 0.474を蚈算したす。 10 から 0.1 の間なので、クランプは効果がありたせん。 ぀たり、gen0 の合蚈予算は 47.4% 1 GB (474 MB) です。 アプリケヌション サむズが 1 MB の堎合、数匏では 15 が蚈算され、10 に調敎されたす。぀たり、蚱可される gen0 予算の合蚈は 10 MB です。

数匏の蚈算内容を調敎し、クランプ倀を倉曎するための 3 ぀の蚭定が甚意されおいたす。

  • f蚈算に適甚される割合。

    蚭定の名前 倀 導入されたバヌゞョン
    runtimeconfig.json System.GC.DGen0GrowthPercent "10 進倀" .NET 10
    環境倉数 DOTNET_GCDGen0GrowthPercent "16 進倀" .NET 10

    この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

    したがっお、 f が 0.474 を蚈算し、この蚭定が 200 の堎合、クランプが適甚される前に乗数が 0.474 * 200% = 0.948 になりたす。

  • permil の最倧クランプ倀。

    蚭定の名前 倀 導入されたバヌゞョン
    runtimeconfig.json System.GC.DGen0GrowthMaxFactor "10 進倀" .NET 10
    環境倉数 DOTNET_GCDGen0GrowthMaxFactor "16 進倀" .NET 10

    この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

    この倀が 20000 の堎合は、最倧クランプ倀が 20000 * 0.001 = 20であるこずを意味したす。

  • パヌミル単䜍の最小クランプ倀。

    蚭定の名前 倀 導入されたバヌゞョン
    runtimeconfig.json System.GC.DGen0GrowthMinFactor "10 進倀" .NET 10
    環境倉数 DOTNET_GCDGen0GrowthMinFactor "16 進倀" .NET 10

    この構成蚭定には特定の MSBuild プロパティがありたせん。 ただし、代わりに RuntimeHostConfigurationOption MSBuild 項目を远加するこずもできたす。 属性の倀ずしお Include 蚭定名を䜿甚したす。 たずえば、「MSBuild プロパティ」を参照しおください。

    この倀が 200 の堎合、最小クランプ倀は 200 * 0.001 = 0.2。