Opciones de configuración del entorno de ejecución para la recolección de elementos no utilizadosRun-time configuration options for garbage collection

Esta página contiene información sobre la configuración del recolector de elementos no utilizados (GC) que se puede cambiar en el entorno de ejecución.This page contains information about garbage collector (GC) settings that can be changed at run time. Si intenta lograr el máximo rendimiento de una aplicación en ejecución, valore la posibilidad de usar esta configuración.If you're trying to achieve peak performance of a running app, consider using these settings. Sin embargo, los valores predeterminados proporcionan un rendimiento óptimo para la mayoría de aplicaciones en situaciones habituales.However, the defaults provide optimum performance for most applications in typical situations.

En esta página, la configuración se organiza en grupos.Settings are arranged into groups on this page. La configuración de cada grupo se usa normalmente junto con las otras para lograr un resultado concreto.The settings within each group are commonly used in conjunction with each other to achieve a specific result.

Nota

  • La aplicación también puede cambiar dinámicamente esta configuración mientras se ejecuta, por lo que se puede invalidar cualquier valor del entorno de ejecución que haya establecido.These settings can also be changed dynamically by the app as it's running, so any run-time settings you set may be overridden.
  • Por lo general, algunos valores de configuración, como el nivel de latencia, se establecen únicamente a través de la API en tiempo de diseño.Some settings, such as latency level, are typically set only through the API at design time. Estos valores se omiten en esta página.Such settings are omitted from this page.
  • En el caso de los valores numéricos, use la notación decimal para la configuración del archivo runtimeconfig.json y la notación hexadecimal para la configuración de las variables de entorno.For number values, use decimal notation for settings in the runtimeconfig.json file and hexadecimal notation for environment variable settings. Para los valores hexadecimales, puede especificarlos con o sin el prefijo "0x".For hexadecimal values, you can specify them with or without the "0x" prefix.

Tipos de recolección de elementos no utilizadosFlavors of garbage collection

Los dos tipos principales de recolección de elementos no utilizados son la GC de estación de trabajo y la de servidor.The two main flavors of garbage collection are workstation GC and server GC. Para más información sobre la diferencia entre estos dos tipos, consulte Recolección de elementos no utilizados de estación de trabajo y de servidor.For more information about differences between the two, see Workstation and server garbage collection.

Los subtipos de la recolección de elementos no utilizados son en segundo plano y no simultáneos.The subflavors of garbage collection are background and non-concurrent.

Use la configuración siguiente para seleccionar los tipos de la recolección de elementos no utilizados:Use the following settings to select flavors of garbage collection:

System.GC.Server/COMPlus_gcServerSystem.GC.Server/COMPlus_gcServer

  • Configura si la aplicación usa la recolección de elementos no utilizados de estación de trabajo o la de servidor.Configures whether the application uses workstation garbage collection or server garbage collection.
  • Predeterminado: recolección de elementos no utilizados de estación de trabajo.Default: Workstation garbage collection. Esto es equivalente a establecer el valor en false.This is equivalent to setting the value to false.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.Server false: estación de trabajo.false - workstation
true: servidor.true - server
.NET Core 1.0.NET Core 1.0
Propiedad de MSBuildMSBuild property ServerGarbageCollection false: estación de trabajo.false - workstation
true: servidor.true - server
.NET Core 1.0.NET Core 1.0
Variable del entornoEnvironment variable COMPlus_gcServer 0: estación de trabajo.0 - workstation
1: servidor.1 - server
.NET Core 1.0.NET Core 1.0
app.config para .NET Frameworkapp.config for .NET Framework GCServerGCServer false: estación de trabajo.false - workstation
true: servidor.true - server

EjemplosExamples

Archivo runtimeconfig.json:runtimeconfig.json file:

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

Archivo del proyecto:Project file:

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

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

</Project>

System.GC.Concurrent/COMPlus_gcConcurrentSystem.GC.Concurrent/COMPlus_gcConcurrent

  • Configura si está habilitada la recolección de elementos no utilizados en segundo plano (simultánea).Configures whether background (concurrent) garbage collection is enabled.
  • Predeterminado: uso de GC en segundo plano.Default: Use background GC. Esto es equivalente a establecer el valor en true.This is equivalent to setting the value to true.
  • Para más información, consulte Recolección de elementos no utilizados en segundo plano.For more information, see Background garbage collection.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.Concurrent true: GC en segundo plano.true - background GC
false: GC no simultáneo.false - non-concurrent GC
.NET Core 1.0.NET Core 1.0
Propiedad de MSBuildMSBuild property ConcurrentGarbageCollection true: GC en segundo plano.true - background GC
false: GC no simultáneo.false - non-concurrent GC
.NET Core 1.0.NET Core 1.0
Variable del entornoEnvironment variable COMPlus_gcConcurrent 1: GC en segundo plano.1 - background GC
0: GC no simultáneo.0 - non-concurrent GC
.NET Core 1.0.NET Core 1.0
app.config para .NET Frameworkapp.config for .NET Framework gcConcurrentgcConcurrent true: GC en segundo plano.true - background GC
false: GC no simultáneo.false - non-concurrent GC

EjemplosExamples

Archivo runtimeconfig.json:runtimeconfig.json file:

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

Archivo del proyecto:Project file:

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

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

</Project>

Administración del uso de recursosManage resource usage

Use los valores descritos en esta sección para administrar el uso del procesador y la memoria del recolector de elementos no utilizados.Use the settings described in this section to manage the garbage collector's memory and processor usage.

Para obtener más información sobre algunos de estos valores, vea la entrada de blog en la que se detalla el término medio entre la GC de la estación de trabajo y del servidor.For more information about some of these settings, see the Middle ground between workstation and server GC blog entry.

System.GC.HeapCount/COMPlus_GCHeapCountSystem.GC.HeapCount/COMPlus_GCHeapCount

  • Limita el número de montones creados por el recolector de elementos no utilizados.Limits the number of heaps created by the garbage collector.
  • Solo se aplica a la recolección de elementos no utilizados del servidor.Applies to server garbage collection only.
  • Si la afinidad del procesador de GC está habilitada (el valor predeterminado) el valor del recuento de montones establece afinidad entre n montones o subprocesos de GC en los primeros n procesadores.If GC processor affinity is enabled, which is the default, the heap count setting affinitizes n GC heaps/threads to the first n processors. (Use los valores affinitize mask o affinitize ranges para especificar exactamente los procesadores entre los que se va a establecer afinidad).(Use the affinitize mask or affinitize ranges settings to specify exactly which processors to affinitize.)
  • Si la afinidad del procesador de GC está deshabilitada, esta configuración limita el número de montones de GC.If GC processor affinity is disabled, this setting limits the number of GC heaps.
  • Para obtener más información, vea la sección Comentarios de GCHeapCount.For more information, see the GCHeapCount remarks.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.HeapCount valor decimaldecimal value .NET Core 3.0.NET Core 3.0
Variable del entornoEnvironment variable COMPlus_GCHeapCount valor hexadecimalhexadecimal value .NET Core 3.0.NET Core 3.0
app.config para .NET Frameworkapp.config for .NET Framework GCHeapCountGCHeapCount valor decimaldecimal value .NET Framework 4.6.2.NET Framework 4.6.2

Ejemplo:Example:

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

Sugerencia

Si configura la opción en runtimeconfig.json, especifique un valor decimal.If you're setting the option in runtimeconfig.json, specify a decimal value. Si configura la opción como una variable de entorno, especifique un valor hexadecimal.If you're setting the option as an environment variable, specify a hexadecimal value. Por ejemplo, para limitar el número de montones a 16, los valores serían 16 para el archivo JSON y 0x10 o 10 para la variable de entorno.For example, to limit the number of heaps to 16, the values would be 16 for the JSON file and 0x10 or 10 for the environment variable.

System.GC.HeapAffinitizeMask/COMPlus_GCHeapAffinitizeMaskSystem.GC.HeapAffinitizeMask/COMPlus_GCHeapAffinitizeMask

  • Especifica los procesadores exactos que deben usar los subprocesos del recolector de elementos no utilizados.Specifies the exact processors that garbage collector threads should use.
  • Si la afinidad del procesador de GC está deshabilitada, esta configuración se ignora.If GC processor affinity is disabled, this setting is ignored.
  • Solo se aplica a la recolección de elementos no utilizados del servidor.Applies to server garbage collection only.
  • El valor es una máscara de bits que define los procesadores que están disponibles para el proceso.The value is a bit mask that defines the processors that are available to the process. Por ejemplo, un valor decimal de 1023 (o un valor hexadecimal de 0x3FF o 3FF si utiliza la variable de entorno) es 0011 1111 1111 en notación binaria.For example, a decimal value of 1023 (or a hexadecimal value of 0x3FF or 3FF if you're using the environment variable) is 0011 1111 1111 in binary notation. Esto especifica que se usarán los 10 primeros procesadores.This specifies that the first 10 processors are to be used. Para especificar los 10 procesadores siguientes, es decir, los procesadores 10-19, especifique un valor decimal de 1047552 (o un valor hexadecimal de 0xFFC00 o FFC00), que es equivalente a un valor binario de 1111 1111 1100 0000 0000.To specify the next 10 processors, that is, processors 10-19, specify a decimal value of 1047552 (or a hexadecimal value of 0xFFC00 or FFC00), which is equivalent to a binary value of 1111 1111 1100 0000 0000.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.HeapAffinitizeMask valor decimaldecimal value .NET Core 3.0.NET Core 3.0
Variable del entornoEnvironment variable COMPlus_GCHeapAffinitizeMask valor hexadecimalhexadecimal value .NET Core 3.0.NET Core 3.0
app.config para .NET Frameworkapp.config for .NET Framework GCHeapAffinitizeMaskGCHeapAffinitizeMask valor decimaldecimal value .NET Framework 4.6.2.NET Framework 4.6.2

Ejemplo:Example:

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

System.GC.GCHeapAffinitizeRanges/COMPlus_GCHeapAffinitizeRangesSystem.GC.GCHeapAffinitizeRanges/COMPlus_GCHeapAffinitizeRanges

Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.GCHeapAffinitizeRanges Lista separada por comas de números de procesador o rangos de números de procesador.Comma-separated list of processor numbers or ranges of processor numbers.
Ejemplo de Unix: "1-10,12,50-52,70"Unix example: "1-10,12,50-52,70"
Ejemplo de Windows: "0:1-10,0:12,1:50-52,1:70"Windows example: "0:1-10,0:12,1:50-52,1:70"
.NET Core 3.0.NET Core 3.0
Variable del entornoEnvironment variable COMPlus_GCHeapAffinitizeRanges Lista separada por comas de números de procesador o rangos de números de procesador.Comma-separated list of processor numbers or ranges of processor numbers.
Ejemplo de Unix: "1-10,12,50-52,70"Unix example: "1-10,12,50-52,70"
Ejemplo de Windows: "0:1-10,0:12,1:50-52,1:70"Windows example: "0:1-10,0:12,1:50-52,1:70"
.NET Core 3.0.NET Core 3.0

Ejemplo:Example:

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

COMPlus_GCCpuGroupCOMPlus_GCCpuGroup

  • Configura si el recolector de elementos no utilizados usa grupos de CPU o no.Configures whether the garbage collector uses CPU groups or not.

    Cuando un equipo Windows de 64 bits tiene varios grupos de CPU, es decir, hay más de 64 procesadores, la habilitación de este elemento amplía la recolección de elementos no utilizados en todos los grupos de CPU.When a 64-bit Windows computer has multiple CPU groups, that is, there are more than 64 processors, enabling this element extends garbage collection across all CPU groups. El recolector de elementos no utilizados usa todos los núcleos para crear y equilibrar montones.The garbage collector uses all cores to create and balance heaps.

  • Solo se aplica a la recolección de elementos no utilizados del servidor en sistemas operativos Windows de 64 bits.Applies to server garbage collection on 64-bit Windows operation systems only.

  • Predeterminado: GC no se extiende por los grupos de CPU.Default: GC does not extend across CPU groups. Esto es equivalente a establecer el valor en 0.This is equivalent to setting the value to 0.

  • Para obtener más información, vea el artículo del blog de Maoni Stephens sobre la mejora de la configuración de la CPU para la GC en máquinas con > 64 CPU.For more information, see Making CPU configuration better for GC on machines with > 64 CPUs on Maoni Stephens' blog.

Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json N/DN/A N/DN/A N/DN/A
Variable del entornoEnvironment variable COMPlus_GCCpuGroup 0: deshabilitado.0 - disabled
1: habilitado.1 - enabled
.NET Core 1.0.NET Core 1.0
app.config para .NET Frameworkapp.config for .NET Framework GCCpuGroupGCCpuGroup false: deshabilitado.false - disabled
true: habilitado.true - enabled

Nota

Para configurar Common Language Runtime (CLR) con el fin de distribuir también los subprocesos del grupo de subprocesos entre todos los grupos de CPU, habilite la opción Elemento Thread_UseAllCpuGroups.To configure the common language runtime (CLR) to also distribute threads from the thread pool across all CPU groups, enable the Thread_UseAllCpuGroups element option. En el caso de las aplicaciones de .NET Core, se puede habilitar esta opción estableciendo el valor de la variable de entorno COMPlus_Thread_UseAllCpuGroups en 1.For .NET Core apps, you can enable this option by setting the value of the COMPlus_Thread_UseAllCpuGroups environment variable to 1.

System.GC.NoAffinitize/COMPlus_GCNoAffinitizeSystem.GC.NoAffinitize/COMPlus_GCNoAffinitize

  • Especifica si establecer afinidad entre subprocesos de recolección de elementos no utilizados con procesadores.Specifies whether to affinitize garbage collection threads with processors. El hecho de establecer afinidad entre un subproceso de GC significa que solo puede ejecutarse en su CPU concreta.To affinitize a GC thread means that it can only run on its specific CPU. Se crea un montón para cada subproceso de GC.A heap is created for each GC thread.
  • Solo se aplica a la recolección de elementos no utilizados del servidor.Applies to server garbage collection only.
  • Predeterminado: establecer afinidad entre subprocesos de recolección de elementos no utilizados con procesadores.Default: Affinitize garbage collection threads with processors. Esto es equivalente a establecer el valor en false.This is equivalent to setting the value to false.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.NoAffinitize false: establecer afinidad.false - affinitize
true: no establecer afinidad.true - don't affinitize
.NET Core 3.0.NET Core 3.0
Variable del entornoEnvironment variable COMPlus_GCNoAffinitize 0: establecer afinidad.0 - affinitize
1: no establecer afinidad.1 - don't affinitize
.NET Core 3.0.NET Core 3.0
app.config para .NET Frameworkapp.config for .NET Framework GCNoAffinitizeGCNoAffinitize false: establecer afinidad.false - affinitize
true: no establecer afinidad.true - don't affinitize
.NET Framework 4.6.2.NET Framework 4.6.2

Ejemplo:Example:

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

System.GC.HeapHardLimit/COMPlus_GCHeapHardLimitSystem.GC.HeapHardLimit/COMPlus_GCHeapHardLimit

  • Especifica el tamaño máximo de confirmación, en bytes, para el montón de GC y la contabilidad de GC.Specifies the maximum commit size, in bytes, for the GC heap and GC bookkeeping.

  • Esta configuración solo se aplica a los equipos de 64 bits.This setting only applies to 64-bit computers.

  • Este valor se omite si se configuran los límites por cada montón de objetos.This setting is ignored if the Per-object-heap limits are configured.

  • El valor predeterminado, que solo se aplica en ciertos casos, es el mayor de 20 MB o de 75 % del límite de memoria del contenedor.The default value, which only applies in certain cases, is the greater of 20 MB or 75% of the memory limit on the container. El valor predeterminado se aplica si:The default value applies if:

Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.HeapHardLimit valor decimaldecimal value .NET Core 3.0.NET Core 3.0
Variable del entornoEnvironment variable COMPlus_GCHeapHardLimit valor hexadecimalhexadecimal value .NET Core 3.0.NET Core 3.0

Ejemplo:Example:

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

Sugerencia

Si configura la opción en runtimeconfig.json, especifique un valor decimal.If you're setting the option in runtimeconfig.json, specify a decimal value. Si configura la opción como una variable de entorno, especifique un valor hexadecimal.If you're setting the option as an environment variable, specify a hexadecimal value. Por ejemplo, para especificar un límite de montón de 200 mebibytes (MiB), los valores serían 209715200 para el archivo JSON y 0xC800000 o C800000 para la variable de entorno.For example, to specify a heap hard limit of 200 mebibytes (MiB), the values would be 209715200 for the JSON file and 0xC800000 or C800000 for the environment variable.

System.GC.HeapHardLimitPercent/COMPlus_GCHeapHardLimitPercentSystem.GC.HeapHardLimitPercent/COMPlus_GCHeapHardLimitPercent

  • Especifica el uso del montón de GC permitido como porcentaje de la memoria física total.Specifies the allowable GC heap usage as a percentage of the total physical memory.

  • Si también se establece System.GC.HeapHardLimit, este valor se omite.If System.GC.HeapHardLimit is also set, this setting is ignored.

  • Esta configuración solo se aplica a los equipos de 64 bits.This setting only applies to 64-bit computers.

  • Si el proceso se ejecuta dentro de un contenedor que tiene un límite de memoria especificado, el porcentaje se calcula como un porcentaje de ese límite de memoria.If the process is running inside a container that has a specified memory limit, the percentage is calculated as a percentage of that memory limit.

  • Este valor se omite si se configuran los límites por cada montón de objetos.This setting is ignored if the Per-object-heap limits are configured.

  • El valor predeterminado, que solo se aplica en ciertos casos, es el menor de 20 MB o 75 % del límite de memoria del contenedor.The default value, which only applies in certain cases, is the lesser of 20 MB or 75% of the memory limit on the container. El valor predeterminado se aplica si:The default value applies if:

    • El proceso se ejecuta dentro de un contenedor que tiene un límite de memoria especificado.The process is running inside a container that has a specified memory limit.
    • No se ha establecido System.GC.HeapHardLimit.System.GC.HeapHardLimit is not set.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.HeapHardLimitPercent valor decimaldecimal value .NET Core 3.0.NET Core 3.0
Variable del entornoEnvironment variable COMPlus_GCHeapHardLimitPercent valor hexadecimalhexadecimal value .NET Core 3.0.NET Core 3.0

Ejemplo:Example:

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

Sugerencia

Si configura la opción en runtimeconfig.json, especifique un valor decimal.If you're setting the option in runtimeconfig.json, specify a decimal value. Si configura la opción como una variable de entorno, especifique un valor hexadecimal.If you're setting the option as an environment variable, specify a hexadecimal value. Por ejemplo, para limitar el uso del montón al 30 %, los valores serían 30 para el archivo JSON y 0x1E o 1E para la variable de entorno.For example, to limit the heap usage to 30%, the values would be 30 for the JSON file and 0x1E or 1E for the environment variable.

Límites por cada montón de objetosPer-object-heap limits

Puede especificar el uso de montones permitidos de la recolección de elementos no utilizados por cada objeto.You can specify the GC's allowable heap usage on a per-object-heap basis. Los diferentes montones son el montón de objetos grandes (LOH), el montón de objetos pequeños (SOH) y el montón de objetos anclados (POH).The different heaps are the large object heap (LOH), small object heap (SOH), and pinned object heap (POH).

COMPLUS_GCHeapHardLimitSOH, COMPLUS_GCHeapHardLimitLOH, COMPLUS_GCHeapHardLimitPOHCOMPLUS_GCHeapHardLimitSOH, COMPLUS_GCHeapHardLimitLOH, COMPLUS_GCHeapHardLimitPOH

  • Si especifica un valor para COMPLUS_GCHeapHardLimitSOH, COMPLUS_GCHeapHardLimitLOH o COMPLUS_GCHeapHardLimitPOH, también debe especificar un valor para COMPLUS_GCHeapHardLimitSOH y COMPLUS_GCHeapHardLimitLOH.If you specify a value for any of the COMPLUS_GCHeapHardLimitSOH, COMPLUS_GCHeapHardLimitLOH, or COMPLUS_GCHeapHardLimitPOH settings, you must also specify a value for COMPLUS_GCHeapHardLimitSOH and COMPLUS_GCHeapHardLimitLOH. Si no lo hace, el runtime no se inicializará.If you don't, the runtime will fail to initialize.
  • El valor predeterminado para COMPLUS_GCHeapHardLimitPOH es 0.The default value for COMPLUS_GCHeapHardLimitPOH is 0. COMPLUS_GCHeapHardLimitSOH y COMPLUS_GCHeapHardLimitLOH no tienen valores predeterminados.COMPLUS_GCHeapHardLimitSOH and COMPLUS_GCHeapHardLimitLOH don't have default values.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
Variable del entornoEnvironment variable COMPLUS_GCHeapHardLimitSOH valor hexadecimalhexadecimal value .NET 5.0.NET 5.0
Variable del entornoEnvironment variable COMPLUS_GCHeapHardLimitLOH valor hexadecimalhexadecimal value .NET 5.0.NET 5.0
Variable del entornoEnvironment variable COMPLUS_GCHeapHardLimitPOH valor hexadecimalhexadecimal value .NET 5.0.NET 5.0

Sugerencia

Si configura la opción como una variable de entorno, especifique un valor hexadecimal.If you're setting the option as an environment variable, specify a hexadecimal value. Por ejemplo, para especificar un límite de montón de 200 mebibytes (MiB), el valor sería 0xC800000 o C800000.For example, to specify a heap hard limit of 200 mebibytes (MiB), the value would be 0xC800000 or C800000.

COMPLUS_GCHeapHardLimitSOHPercent, COMPLUS_GCHeapHardLimitLOHPercent, COMPLUS_GCHeapHardLimitPOHPercentCOMPLUS_GCHeapHardLimitSOHPercent, COMPLUS_GCHeapHardLimitLOHPercent, COMPLUS_GCHeapHardLimitPOHPercent

  • Si especifica un valor para COMPLUS_GCHeapHardLimitSOHPercent, COMPLUS_GCHeapHardLimitLOHPercent o COMPLUS_GCHeapHardLimitPOHPercent, también debe especificar un valor para COMPLUS_GCHeapHardLimitSOHPercent y COMPLUS_GCHeapHardLimitLOHPercent.If you specify a value for any of the COMPLUS_GCHeapHardLimitSOHPercent, COMPLUS_GCHeapHardLimitLOHPercent, or COMPLUS_GCHeapHardLimitPOHPercent settings, you must also specify a value for COMPLUS_GCHeapHardLimitSOHPercent and COMPLUS_GCHeapHardLimitLOHPercent. Si no lo hace, el runtime no se inicializará.If you don't, the runtime will fail to initialize.
  • Estos valores se omiten si se especifican COMPLUS_GCHeapHardLimitSOH, COMPLUS_GCHeapHardLimitLOH y COMPLUS_GCHeapHardLimitPOH.These settings are ignored if COMPLUS_GCHeapHardLimitSOH, COMPLUS_GCHeapHardLimitLOH, and COMPLUS_GCHeapHardLimitPOH are specified.
  • Un valor de 1 significa que la recolección de elementos no utilizados usa el 1 % de la memoria física total para ese montón de objetos.A value of 1 means that GC uses 1% of total physical memory for that object heap.
  • Cada valor debe ser mayor que cero y menor o igual que 100.Each value must be greater than zero and less than 100. Además, la suma de los tres valores de porcentaje debe ser inferior a 100.Additionally, the sum of the three percentage values must be less than 100. En caso contrario, el runtime no se inicializará.Otherwise, the runtime will fail to initialize.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
Variable del entornoEnvironment variable COMPLUS_GCHeapHardLimitSOHPercent valor hexadecimalhexadecimal value .NET 5.0.NET 5.0
Variable del entornoEnvironment variable COMPLUS_GCHeapHardLimitLOHPercent valor hexadecimalhexadecimal value .NET 5.0.NET 5.0
Variable del entornoEnvironment variable COMPLUS_GCHeapHardLimitPOHPercent valor hexadecimalhexadecimal value .NET 5.0.NET 5.0

Sugerencia

Si configura la opción como una variable de entorno, especifique un valor hexadecimal.If you're setting the option as an environment variable, specify a hexadecimal value. Por ejemplo, para limitar el uso del montón al 30 %, el valor sería 0x1E o 1E.For example, to limit the heap usage to 30%, the value would be 0x1E or 1E.

System.GC.RetainVM/COMPlus_GCRetainVMSystem.GC.RetainVM/COMPlus_GCRetainVM

  • Configura si los segmentos que se deben eliminar se ponen en una lista en espera para usarlos en el futuro o se devuelven al sistema operativo (SO).Configures whether segments that should be deleted are put on a standby list for future use or are released back to the operating system (OS).
  • Predeterminado: devolver los segmentos al sistema operativo.Default: Release segments back to the operating system. Esto es equivalente a establecer el valor en false.This is equivalent to setting the value to false.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.RetainVM false: liberar al sistema operativo.false - release to OS
true: poner en espera.true - put on standby
.NET Core 1.0.NET Core 1.0
Propiedad de MSBuildMSBuild property RetainVMGarbageCollection false: liberar al sistema operativo.false - release to OS
true: poner en espera.true - put on standby
.NET Core 1.0.NET Core 1.0
Variable del entornoEnvironment variable COMPlus_GCRetainVM 0: liberar al sistema operativo.0 - release to OS
1: poner en espera.1 - put on standby
.NET Core 1.0.NET Core 1.0

EjemplosExamples

Archivo runtimeconfig.json:runtimeconfig.json file:

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

Archivo del proyecto:Project file:

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

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

</Project>

Páginas grandesLarge pages

COMPlus_GCLargePagesCOMPlus_GCLargePages

  • Especifica si se deben usar páginas grandes cuando se establece un límite máximo de montones.Specifies whether large pages should be used when a heap hard limit is set.
  • Predeterminado: no utilizar páginas grandes cuando se establezca un límite rígido de montones.Default: Don't use large pages when a heap hard limit is set. Esto es equivalente a establecer el valor en 0.This is equivalent to setting the value to 0.
  • Se trata de un valor de configuración experimental.This is an experimental setting.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json N/DN/A N/DN/A N/DN/A
Variable del entornoEnvironment variable COMPlus_GCLargePages 0: deshabilitado.0 - disabled
1: habilitado.1 - enabled
.NET Core 3.0.NET Core 3.0

Objetos grandesLarge objects

COMPlus_gcAllowVeryLargeObjectsCOMPlus_gcAllowVeryLargeObjects

  • Configura la compatibilidad del recolector de elementos no utilizados en plataformas de 64 bits para matrices de más de 2 gigabytes (GB) de tamaño total.Configures garbage collector support on 64-bit platforms for arrays that are greater than 2 gigabytes (GB) in total size.
  • Predeterminado: GC admite matrices de más de 2 GB.Default: GC supports arrays greater than 2-GB. Esto es equivalente a establecer el valor en 1.This is equivalent to setting the value to 1.
  • Esta opción puede quedar obsoleta en una versión futura de .NET.This option may become obsolete in a future version of .NET.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json N/DN/A N/DN/A N/DN/A
Variable del entornoEnvironment variable COMPlus_gcAllowVeryLargeObjects 1: habilitado.1 - enabled
0: deshabilitado.0 - disabled
.NET Core 1.0.NET Core 1.0
app.config para .NET Frameworkapp.config for .NET Framework gcAllowVeryLargeObjectsgcAllowVeryLargeObjects 1: habilitado.1 - enabled
0: deshabilitado.0 - disabled
.NET Framework 4.5.NET Framework 4.5

Umbral del montón de objetos grandesLarge object heap threshold

System.GC.LOHThreshold/COMPlus_GCLOHThresholdSystem.GC.LOHThreshold/COMPlus_GCLOHThreshold

  • Especifica el tamaño del umbral, en bytes, que provoca que los objetos vayan al montón de objetos grandes (LOH).Specifies the threshold size, in bytes, that causes objects to go on the large object heap (LOH).
  • El valor predeterminado del umbral es de 85 000 bytes.The default threshold is 85,000 bytes.
  • El valor que especifique debe ser mayor que el umbral predeterminado.The value you specify must be larger than the default threshold.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json System.GC.LOHThreshold valor decimaldecimal value .NET Core 1.0.NET Core 1.0
Variable del entornoEnvironment variable COMPlus_GCLOHThreshold valor hexadecimalhexadecimal value .NET Core 1.0.NET Core 1.0
app.config para .NET Frameworkapp.config for .NET Framework GCLOHThresholdGCLOHThreshold valor decimaldecimal value .NET Framework 4.8.NET Framework 4.8

Ejemplo:Example:

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

Sugerencia

Si configura la opción en runtimeconfig.json, especifique un valor decimal.If you're setting the option in runtimeconfig.json, specify a decimal value. Si configura la opción como una variable de entorno, especifique un valor hexadecimal.If you're setting the option as an environment variable, specify a hexadecimal value. Por ejemplo, para establecer un tamaño de umbral de 120 000 bytes, los valores serían 120000 para el archivo JSON y 0x1D4C0 o 1D4C0 para la variable de entorno.For example, to set a threshold size of 120,000 bytes, the values would be 120000 for the JSON file and 0x1D4C0 or 1D4C0 for the environment variable.

GC independienteStandalone GC

COMPlus_GCNameCOMPlus_GCName

  • Especifica una ruta de acceso a la biblioteca que contiene el recolector de elementos no utilizados que el entorno de ejecución pretende cargar.Specifies a path to the library containing the garbage collector that the runtime intends to load.
  • Para obtener más información, vea Diseño del cargador de GC independiente.For more information, see Standalone GC loader design.
Nombre de valorSetting name ValoresValues Versión introducidaVersion introduced
runtimeconfig.jsonruntimeconfig.json N/DN/A N/DN/A N/DN/A
Variable del entornoEnvironment variable COMPlus_GCName string_pathstring_path .NET Core 2.0.NET Core 2.0