反馈
显示另外 4 个
此页面包含有关 .NET 运行时垃圾回收器 (GC) 设置的信息。 如果你要尝试让正在运行的应用达到最佳性能,请考虑使用这些设置。 然而,在特定情况下,默认值为大多数应用程序提供最佳性能。
设置在此页上被排入组中。 每个组内的设置通常彼此结合使用以实现特定的结果。
?备注
DOTNET_
,而不是?COMPlus_
。 但是,COMPlus_
?前缀仍将继续正常工作。 如果使用的是早期版本的 .NET 运行时,则仍应该使用?COMPlus_
?前缀,例如?COMPlus_gcServer
。对于不同版本的 .NET 运行时,可采用不同的方法来指定配置值。 下表显示了相关摘要。
展开表
配置位置 | 此位置适用的 .NET 版本 | 格式 | 解释方式 |
---|---|---|---|
runtimeconfig.json 文件/ runtimeconfig.template.json 文件 | .NET (Core) | n | n 解释为十进制值。 |
环境变量 | .NET Framework、.NET (Core) | 0xn 或 n | n 被解释为任一格式的十六进制值 |
app.config 文件 | .NET Framework | 0xn | n 被解释为十六进制值1 |
1?可以为 app.config 文件设置指定不带?0x
?前缀的值,但不建议这样做。 在 .NET Framework 4.8+ 上,由于出现了 bug,不带?0x
?前缀的指定值被解释为十六进制值,但在以前的 .NET Framework 版本中,它被解释为十进制值。 若要避免更改配置,请在 app.config 文件中指定值时使用?0x
?前缀。
例如,若要为名为“A.exe”的 .NET Framework 应用的?GCHeapCount
?指定 12 个堆,请将下列 XML 添加到 A.exe.config 文件中。
XML复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
...
<runtime>
<gcServer enabled="true"/>
<GCHeapCount>0xc</GCHeapCount>
</runtime>
</configuration>
对于 .NET (Core) 和 .NET Framework,可以使用环境变量。
在 Windows 上使用 .NET 6 或更高版本:
Windows 命令提示符复制
SET DOTNET_gcServer=1
SET DOTNET_GCHeapCount=c
在 Windows 上使用 .NET 5 或更低版本:
Windows 命令提示符复制
SET COMPlus_gcServer=1
SET COMPlus_GCHeapCount=c
在其他操作系统上:
对于 .NET 6 或更高版本:
Bash复制
export DOTNET_gcServer=1
export DOTNET_GCHeapCount=c
对于 .NET 5 和更低版本:
Bash复制
export COMPlus_gcServer=1
export COMPlus_GCHeapCount=c
如果不使用 .NET Framework,则还可以在 runtimeconfig.json?或 runtimeconfig.template.json?文件中设置值。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
垃圾回收的两种主要风格是工作站 GC 和服务器 GC。 有关两者之间的差异的详细信息,请参阅工作站和服务器垃圾回收。
垃圾回收的次要风格是后台垃圾回收和非并发垃圾回收。
使用以下设置,选择垃圾回收的风格:
false
。展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.Server | false ?- 工作站true ?- 服务器 | .NET Core 1.0 |
MSBuild 属性 | ServerGarbageCollection | false ?- 工作站true ?- 服务器 | .NET Core 1.0 |
环境变量 | COMPlus_gcServer | 0 ?- 工作站1 ?- 服务器 | .NET Core 1.0 |
环境变量 | DOTNET_gcServer | 0 ?- 工作站1 ?- 服务器 | .NET 6 |
.NET Framework 的 app.config | GCServer | false ?- 工作站true ?- 服务器 |
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.Server": true
}
}
项目文件:
XML复制
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
</Project>
true
。展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.Concurrent | true ?- 后台 GCfalse ?- 非并发 GC | .NET Core 1.0 |
MSBuild 属性 | ConcurrentGarbageCollection | true ?- 后台 GCfalse ?- 非并发 GC | .NET Core 1.0 |
环境变量 | COMPlus_gcConcurrent | 1 ?- 后台 GC0 ?- 非并发 GC | .NET Core 1.0 |
环境变量 | DOTNET_gcConcurrent | 1 ?- 后台 GC0 ?- 非并发 GC | .NET 6 |
.NET Framework 的 app.config | gcConcurrent | true ?- 后台 GCfalse ?- 非并发 GC |
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.Concurrent": false
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.Concurrent": false
}
}
项目文件:
XML复制
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
</Project>
使用以下设置来管理垃圾回收器的内存和处理器使用情况:
有关其中某些设置的详细信息,请参阅?Middle ground between workstation and server GC(服务器和工作站 GC 之间的中间地带)博客条目。
n
?个 GC 堆/线程关联到前?n
?个处理器。 (使用关联掩码或关联范围设置可精确指定要关联的处理器。)展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapCount | 十进制值 | .NET Core 3.0 |
环境变量 | COMPlus_GCHeapCount | 十六进制值 | .NET Core 3.0 |
环境变量 | DOTNET_GCHeapCount | 十六进制值 | .NET 6 |
.NET Framework 的 app.config | GCHeapCount | 十进制值 | .NET Framework 4.6.2 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapCount": 16
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.HeapCount": 16
}
}
?提示
如果要在 runtimeconfig.template.json 中设置该选项,请指定一个十进制值。 如果要将选项设置为一个环境变量,请指定一个十六进制值。 例如,若要将堆数限制为 16,则该值对于 JSON 文件为 16,对于环境变量则为 0x10 或 10。
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapAffinitizeMask | 十进制值 | .NET Core 3.0 |
环境变量 | COMPlus_GCHeapAffinitizeMask | 十六进制值 | .NET Core 3.0 |
环境变量 | DOTNET_GCHeapAffinitizeMask | 十六进制值 | .NET 6 |
.NET Framework 的 app.config | GCHeapAffinitizeMask | 十进制值 | .NET Framework 4.6.2 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
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 |
环境变量 | COMPlus_GCHeapAffinitizeRanges | 以逗号分隔的处理器编号列表或处理器编号范围。 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 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:70"
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:70"
}
}
配置垃圾回收器是否使用?CPU 组。
当 64 位 Windows 计算机具有多个 CPU 组(即,有超过 64 个处理器)时,通过启用此元素,可跨所有 CPU 组扩展垃圾回收。 垃圾回收器使用所有核心来创建和平衡堆。
?备注
这是仅限 Windows 的概念。 在较旧的 Windows 版本中,Windows 将进程限制为一个 CPU 组。 因此,GC 仅使用一个 CPU 组,除非使用此设置来启用多个 CPU 组。 Windows 11 和 Server 2022 中取消了此 OS 限制。 此外,从 .NET 7 开始,GC 默认在 Windows 11 或 Server 2022 上运行时使用所有 CPU 组。
仅适用于 64 位 Windows 操作系统上的服务器垃圾回收。
默认:垃圾回收不会跨 CPU 组扩展。 它等效于将值设置为?0
。
有关详细信息,请参阅 Maoni Stephens 的博客文章:在 64 个以上 CPU 的计算机上为 GC 改善 CPU 配置。
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.CpuGroup | false ?- 禁用true ?- 启用 | .NET 5 |
环境变量 | COMPlus_GCCpuGroup | 0 ?- 禁用1 ?- 启用 | .NET Core 1.0 |
环境变量 | DOTNET_GCCpuGroup | 0 ?- 禁用1 ?- 启用 | .NET 6 |
.NET Framework 的 app.config | GCCpuGroup | false ?- 禁用true ?- 启用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
?备注
若要配置公共语言运行时 (CLR),使其也在所有 CPU 组之间分配线程池中的线程,请启用?Thread_UseAllCpuGroups 元素选项。 对于 .NET Core 应用,可以通过将?DOTNET_Thread_UseAllCpuGroups
?环境变量的值设置为?1
?以启用此选项。
false
。展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.NoAffinitize | false ?- 关联true ?- 不关联 | .NET Core 3.0 |
环境变量 | COMPlus_GCNoAffinitize | 0 ?- 关联1 ?- 不关联 | .NET Core 3.0 |
环境变量 | DOTNET_GCNoAffinitize | 0 ?- 关联1 ?- 不关联 | .NET 6 |
.NET Framework 的 app.config | GCNoAffinitize | false ?- 关联true ?- 不关联 | .NET Framework 4.6.2 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.NoAffinitize": true
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.NoAffinitize": true
}
}
指定 GC 堆和 GC 簿记的最大提交大小(以字节为单位)。
此设置仅适用于 64 位计算机。
如果已配置每对象堆限制,则忽略此设置。
默认值(仅在某些情况下适用)是 20 MB 或容器内存限制的 75%(以较大者为准)。 此默认值在以下情况下适用:
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimit | 十进制值 | .NET Core 3.0 |
环境变量 | COMPlus_GCHeapHardLimit | 十六进制值 | .NET Core 3.0 |
环境变量 | DOTNET_GCHeapHardLimit | 十六进制值 | .NET 6 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
?提示
如果要在 runtimeconfig.template.json 中设置该选项,请指定一个十进制值。 如果要将选项设置为一个环境变量,请指定一个十六进制值。 例如,若要将堆硬限制指定为 200 个兆字节 (MiB),则该值对于 JSON 文件为 209715200,对于环境变量则为 0xC800000 或 C800000。
指定允许的 GC 堆使用量占总物理内存的百分比。
如果还设置了?System.GC.heaphdlimit,则忽略此设置。
此设置仅适用于 64 位计算机。
如果进程正在具有指定内存限制的容器中运行,则百分比的计算结果将为该内存限制的百分比。
如果已配置每对象堆限制,则忽略此设置。
默认值(仅在某些情况下适用)是 20 MB 或容器内存限制的 75%(以较大者为准)。 此默认值在以下情况下适用:
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitPercent | 十进制值 | .NET Core 3.0 |
环境变量 | COMPlus_GCHeapHardLimitPercent | 十六进制值 | .NET Core 3.0 |
环境变量 | DOTNET_GCHeapHardLimitPercent | 十六进制值 | .NET 6 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
?提示
如果要在 runtimeconfig.template.json 中设置该选项,请指定一个十进制值。 如果要将选项设置为一个环境变量,请指定一个十六进制值。 例如,若要将堆使用率限制为 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 | 十进制值 | .NET 5 |
环境变量 | COMPlus_GCHeapHardLimitSOH | 十六进制值 | .NET 5 |
环境变量 | DOTNET_GCHeapHardLimitSOH | 十六进制值 | .NET 6 |
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitLOH | 十进制值 | .NET 5 |
环境变量 | COMPlus_GCHeapHardLimitLOH | 十六进制值 | .NET 5 |
环境变量 | DOTNET_GCHeapHardLimitLOH | 十六进制值 | .NET 6 |
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitPOH | 十进制值 | .NET 5 |
环境变量 | COMPlus_GCHeapHardLimitPOH | 十六进制值 | .NET 5 |
环境变量 | DOTNET_GCHeapHardLimitPOH | 十六进制值 | .NET 6 |
这些配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
?提示
如果要在 runtimeconfig.template.json 中设置该选项,请指定一个十进制值。 如果要将选项设置为一个环境变量,请指定一个十六进制值。 例如,若要将堆硬限制指定为 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
,则忽略这些设置。展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitSOHPercent | 十进制值 | .NET 5 |
环境变量 | COMPlus_GCHeapHardLimitSOHPercent | 十六进制值 | .NET 5 |
环境变量 | DOTNET_GCHeapHardLimitSOHPercent | 十六进制值 | .NET 6 |
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitLOHPercent | 十进制值 | .NET 5 |
环境变量 | COMPlus_GCHeapHardLimitLOHPercent | 十六进制值 | .NET 5 |
环境变量 | DOTNET_GCHeapHardLimitLOHPercent | 十六进制值 | .NET 6 |
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HeapHardLimitPOHPercent | 十进制值 | .NET 5 |
环境变量 | COMPlus_GCHeapHardLimitPOHPercent | 十六进制值 | .NET 5 |
环境变量 | DOTNET_GCHeapHardLimitPOHPercent | 十六进制值 | .NET 6 |
这些配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
?提示
如果要在 runtimeconfig.template.json 中设置该选项,请指定一个十进制值。 如果要将选项设置为一个环境变量,请指定一个十六进制值。 例如,若要将堆使用率限制为 30%,则该值对于 JSON 文件为 30,对于环境变量则为 0x1E 或 1E。
内存负载由正在使用的物理内存的百分比表示。 默认情况下,当物理内存负载达到 90%时,垃圾回收对于执行完整的压缩垃圾回收变得更加积极,以避免分页。 当内存负载低于 90% 时,GC 优先使用后台回收进行完整的垃圾回收,这种方法的暂停时间较短,但不会使堆的总大小减少太多。 在具有大量内存(80 GB 或更多)的计算机上,默认负载阈值介于 90% 到 97% 之间。
可以通过?DOTNET_GCHighMemPercent
?环境变量或?System.GC.HighMemoryPercent
?JSON 配置设置来调整高内存负载阈值。 如果要控制堆大小,请考虑调整阈值。 例如,对于具有 64 GB 内存的计算机上的主要进程,当有 10% 的可用内存时,GC 开始响应是合理的。 但是对于较小的进程(例如,仅消耗 1GB 内存的进程),GC 可以在可用内存少于 10% 的情况下轻松地运行。 对于这些较小的进程,请考虑将阈值设置得更高。 另一方面,如果你希望较大的进程具有较小的堆大小(即使有足够的物理内存可用),要使 GC 更快做出反应以缩小堆大小,则降低此阈值是一种有效的方法。
?备注
对于在容器中运行的进程,GC 将根据容器限制考虑物理内存。
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.HighMemoryPercent | 十进制值 | .NET 5 |
环境变量 | COMPlus_GCHighMemPercent | 十六进制值 | .NET Core 3.0 .NET Framework 4.7.2 |
环境变量 | DOTNET_GCHighMemPercent | 十六进制值 | .NET 6 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
?提示
如果要在 runtimeconfig.template.json 中设置该选项,请指定一个十进制值。 如果要将选项设置为一个环境变量,请指定一个十六进制值。 例如,要将高内存阈值设置为 75%,JSON 文件的值将为 75,而环境变量的值为 0x4B 或 4B。
false
。展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.RetainVM | false ?- 释放到 OStrue ?- 置于备用列表上 | .NET Core 1.0 |
MSBuild 属性 | RetainVMGarbageCollection | false ?- 释放到 OStrue ?- 置于备用列表上 | .NET Core 1.0 |
环境变量 | COMPlus_GCRetainVM | 0 ?- 释放到 OS1 ?- 置于备用列表上 | .NET Core 1.0 |
环境变量 | DOTNET_GCRetainVM | 0 ?- 释放到 OS1 ?- 置于备用列表上 | .NET 6 |
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.RetainVM": true
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.RetainVM": true
}
}
项目文件:
XML复制
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
</Project>
0
。展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | 不可用 | 不可用 | 不可用 |
环境变量 | COMPlus_GCLargePages | 0 ?- 禁用1 ?- 启用 | .NET Core 3.0 |
环境变量 | DOTNET_GCLargePages | 0 ?- 禁用1 ?- 启用 | .NET 6 |
1
。展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | 不可用 | 不可用 | 不可用 |
环境变量 | COMPlus_gcAllowVeryLargeObjects | 1 ?- 启用0 ?- 禁用 | .NET Core 1.0 |
环境变量 | DOTNET_gcAllowVeryLargeObjects | 1 ?- 启用0 ?- 禁用 | .NET 6 |
.NET Framework 的 app.config | gcAllowVeryLargeObjects | 1 ?- 启用0 ?- 禁用 | .NET Framework 4.5 |
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.LOHThreshold | 十进制值 | .NET Core 1.0 |
环境变量 | COMPlus_GCLOHThreshold | 十六进制值 | .NET Core 1.0 |
环境变量 | DOTNET_GCLOHThreshold | 十六进制值 | .NET 6 |
.NET Framework 的 app.config | GCLOHThreshold | 十进制值 | .NET Framework 4.8 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
runtimeconfig.json 文件:
JSON复制
{
"runtimeOptions": {
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
}
runtimeconfig.template.json 文件:
JSON复制
{
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
?提示
如果要在 runtimeconfig.template.json 中设置该选项,请指定一个十进制值。 如果要将选项设置为一个环境变量,请指定一个十六进制值。 例如,若要将阙值大小设置为 120,000 个字节,则该值对于 JSON 文件为 120,000,对于环境变量则为 0x1D4C0 或 1D4C0。
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | 不可用 | 不可用 | 不可用 |
环境变量 | COMPlus_GCName | string_path | .NET Core 2.0 |
环境变量 | DOTNET_GCName | string_path | .NET 6 |
展开表
设置名 | 值 | 引入的版本 | |
---|---|---|---|
runtimeconfig.json | System.GC.ConserveMemory | 0 ?-?9 | .NET 6 |
环境变量 | COMPlus_GCConserveMemory | 0 ?-9 | .NET Framework 4.8 |
环境变量 | DOTNET_GCConserveMemory | 0 ?-9 | .NET 6 |
.NET Framework 的 app.config | GCConserveMemory | 0 ?-9 | .NET Framework 4.8 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项?RuntimeHostConfigurationOption
。 将 runtimeconfig.json 设置名称用作?Include
?特性的值。?如需示例,请参阅?MSBuild 属性。
app.config 文件示例:
XML复制
<configuration>
<runtime>
<GCConserveMemory enabled="5"/>
</runtime>
</configuration>
?提示
尝试不同的数字,看看哪个值最适合你。 从介于 5 至 7 之间的值开始。
?在 GitHub 上与我们协作
可以在 GitHub 上找到此内容的源,还可以在其中创建和查看问题和拉取请求。 有关详细信息,请参阅参与者指南。
.NET 反馈
.NET 是一个开放源代码项目。 选择一个链接以提供反馈: