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 obtener más información sobre la diferencia entre estos dos tipos, vea Fundamentos de la recolección de elementos no utilizados.For more information about differences between the two, see Fundamentals of 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 (false).Default: Workstation garbage collection (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
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

Ejemplo:Example:

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

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

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
Variable del entornoEnvironment variable COMPlus_gcConcurrent 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
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

Ejemplo:Example:

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

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, que es el valor predeterminado de esta opción, 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. (Utilice la configuración pertinente para establecer la afinidad entre una máscara o entre rangos 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 está deshabilitada la afinidad del procesador de GC, 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 está deshabilitada estableciendo System.GC.NoAffinitize en true, esta configuración se omite.If processor affinity is disabled by setting System.GC.NoAffinitize to true, 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

  • Especifica la lista de procesadores que se van a usar para los subprocesos del recolector de elementos no utilizados.Specifies the list of processors to use for garbage collector threads.
  • Este valor es similar a System.GC.HeapAffinitizeMask, salvo que permite especificar más de 64 procesadores.This setting is similar to System.GC.HeapAffinitizeMask, except it allows you to specify more than 64 processors.
  • En el caso de los sistemas operativos Windows, agregue el prefijo con el grupo de CPU correspondiente al número o el rango del procesador, por ejemplo, "0:1-10,0:12,1:50-52,1:70".For Windows operating systems, prefix the processor number or range with the corresponding CPU group, for example, "0:1-10,0:12,1:50-52,1:70".
  • Si la afinidad del procesador está deshabilitada estableciendo System.GC.NoAffinitize en true, esta configuración se omite.If processor affinity is disabled by setting System.GC.NoAffinitize to true, this setting is ignored.
  • Solo se aplica a la recolección de elementos no utilizados del servidor.Applies to server garbage collection only.
  • 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 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: deshabilitado (0).Default: Disabled (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 (false).Default: Affinitize garbage collection threads with processors (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.
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 como porcentaje de la memoria total.Specifies the GC heap usage as a percentage of the total memory.
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.

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 (false).Default: Release segments back to the operating system (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
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

Ejemplo:Example:

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

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: deshabilitado (0).Default: Disabled (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: habilitado (1).Default: Enabled (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