Compartir vía


GC.TryStartNoGCRegion Método

Definición

Intenta suspender la recolección de elementos durante la ejecución de una ruta crítica.

Sobrecargas

TryStartNoGCRegion(Int64, Int64, Boolean)

Intenta suspender la recolección de elementos no usados durante la ejecución de una ruta crítica si una cantidad especificada de memoria está disponible para los montones de objetos grandes y pequeños, y controla si el recolector de elementos no usados realiza una recolección de elementos no usados de bloqueo completa si no hay suficiente memoria disponible inicialmente.

TryStartNoGCRegion(Int64, Int64)

Intenta suspender la recolección de elementos no usados durante la ejecución de una ruta crítica si una cantidad específica de memoria está disponible para los montones de objetos pequeños y grandes.

TryStartNoGCRegion(Int64, Boolean)

Intenta suspender la recolección de elementos no usados durante la ejecución de una ruta crítica si una cantidad especificada de memoria está disponible y controla si el recolector de elementos no usados realiza una recolección de elementos no usados de bloqueo completa si no hay suficiente memoria disponible inicialmente.

TryStartNoGCRegion(Int64)

Intenta suspender la recolección de elementos durante la ejecución de una ruta crítica si una cantidad específica de memoria está disponible.

Comentarios

Importante

No puede anidar llamadas al TryStartNoGCRegion método y solo debe llamar al EndNoGCRegion método si el tiempo de ejecución no está actualmente en modo de latencia de región de GC. En otras palabras, no debe llamar TryStartNoGCRegion varias veces (después de la primera llamada al método, las llamadas posteriores no se realizarán correctamente) y no debe esperar que las llamadas se EndNoGCRegion realicen correctamente solo porque la primera llamada a TryStartNoGCRegion se realizó correctamente.

TryStartNoGCRegion(Int64, Int64, Boolean)

Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs

Intenta suspender la recolección de elementos no usados durante la ejecución de una ruta crítica si una cantidad especificada de memoria está disponible para los montones de objetos grandes y pequeños, y controla si el recolector de elementos no usados realiza una recolección de elementos no usados de bloqueo completa si no hay suficiente memoria disponible inicialmente.

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long, disallowFullBlockingGC As Boolean) As Boolean

Parámetros

totalSize
Int64

La cantidad de memoria en bytes que se asignan sin desencadenar una recolección. totalSize - lohSize debe ser menor o igual que el tamaño de un segmento efímero. Para saber más sobre el tamaño de un segmento efímero, vea la sección "Generaciones y segmentos efímeros" del artículo Fundamentos de la recolección de elementos no utilizados.

lohSize
Int64

El número de bytes de totalSize que se utilizarán para las asignaciones de montones de objetos grandes (LOH).

disallowFullBlockingGC
Boolean

true para omitir una recolección de elementos no utilizados si el recolector de elementos no utilizados no puede asignar inicialmente la memoria especificada al montón de objetos pequeños (SOH) y LOH; en caso contrario, false.

Devoluciones

true si el tiempo de ejecución pudo confirmar la cantidad necesaria de memoria y el recolector de elementos no utilizados puede entrar en el modo de no latencia en la región GC; en caso contrario, false.

Atributos

Excepciones

totalSize - lohSize supera el tamaño del segmento efímero.

El proceso ya está en modo de no latencia de región de GC.

Comentarios

El TryStartNoGCRegion(Int64, Int64, Boolean) método intenta colocar el recolector de elementos no utilizados en ningún modo de latencia de región de GC, lo que no permite la recolección de elementos no utilizados mientras una aplicación ejecuta una región crítica del código. Si el tiempo de ejecución no puede asignar inicialmente la cantidad de memoria solicitada y el disallowFullBlockingGC argumento es false, el recolector de elementos no utilizados realiza una recolección completa de elementos no utilizados de bloqueo en un intento de liberar memoria adicional; de lo contrario, se produce un error en la asignación y el método devuelve false. El recolector de elementos no utilizados no entra en modo de latencia de región de GC si es capaz de asignar lohSize para loH y totalSize - lohSize para el montón de objetos pequeños (SOH).

lohSize debe ser lo suficientemente grande como para controlar todas las asignaciones de memoria que se producen en la ruta de acceso crítica para loH y totalSize - lohSize debe ser lo suficientemente grande como para controlar todas las asignaciones de memoria que se producen en la ruta crítica para el SOH. Esto incluye las asignaciones de la aplicación, así como las asignaciones que realiza el tiempo de ejecución en nombre de la aplicación.

Establecer disallowFullBlockingGC en true para evitar una recolección completa de elementos no utilizados de bloqueo si no hay suficiente memoria disponible inicialmente es más útil en escenarios de equilibrio de carga: un sistema puede llamar a este método y notificarse como listo para aceptar solicitudes si devuelve truey hacer que el equilibrador de carga redirija las solicitudes a otros sistemas si devuelve false. A continuación, puede realizar una recolección de elementos no utilizados de bloqueo completa cuando no controla las solicitudes llamando al Collect(Int32, GCCollectionMode, Boolean, Boolean) método .

Importante

No puede anidar llamadas al TryStartNoGCRegion método y solo debe llamar al EndNoGCRegion método si el tiempo de ejecución no está actualmente en modo de latencia de región de GC. En otras palabras, no debe llamar TryStartNoGCRegion varias veces (después de la primera llamada al método, las llamadas posteriores no se realizarán correctamente) y no debe esperar que las llamadas se EndNoGCRegion realicen correctamente solo porque la primera llamada a TryStartNoGCRegion se realizó correctamente.

Para salir del modo de latencia de la región sin GC, llame al EndNoGCRegion método .

Consulte también

Se aplica a

TryStartNoGCRegion(Int64, Int64)

Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs

Intenta suspender la recolección de elementos no usados durante la ejecución de una ruta crítica si una cantidad específica de memoria está disponible para los montones de objetos pequeños y grandes.

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize);
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
static member TryStartNoGCRegion : int64 * int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long) As Boolean

Parámetros

totalSize
Int64

La cantidad de memoria en bytes que se asignan sin desencadenar una recolección. totalSize - lohSize debe ser menor o igual que el tamaño de un segmento efímero. Para saber más sobre el tamaño de un segmento efímero, vea la sección "Generaciones y segmentos efímeros" del artículo Fundamentos de la recolección de elementos no utilizados.

lohSize
Int64

El número de bytes de totalSize que se utilizarán para las asignaciones de montones de objetos grandes (LOH).

Devoluciones

true si el tiempo de ejecución pudo confirmar la cantidad necesaria de memoria y el recolector de elementos no utilizados puede entrar en el modo de no latencia en la región GC; en caso contrario, false.

Atributos

Excepciones

totalSize - lohSize supera el tamaño del segmento efímero.

El proceso ya está en modo de no latencia de región de GC.

Comentarios

El TryStartNoGCRegion(Int64, Int64) método intenta colocar el recolector de elementos no utilizados en ningún modo de latencia de región de GC, lo que no permite la recolección de elementos no utilizados mientras una aplicación ejecuta una región crítica del código. Si el tiempo de ejecución no puede asignar inicialmente la cantidad de memoria solicitada, el recolector de elementos no utilizados realiza una recolección completa de elementos no utilizados de bloqueo en un intento de liberar memoria adicional. El recolector de elementos no utilizados no entra en modo de latencia de región de GC si es capaz de asignar lohSize para loH y totalSize - lohSize para el montón de objetos pequeños (SOH).

lohSize debe ser lo suficientemente grande como para controlar todas las asignaciones de memoria que se producen en la ruta de acceso crítica para loH y totalSize - lohSize debe ser lo suficientemente grande como para controlar todas las asignaciones de memoria que se producen en la ruta crítica para el SOH. Esto incluye las asignaciones de la aplicación, así como las asignaciones que realiza el tiempo de ejecución en nombre de la aplicación.

Importante

No puede anidar llamadas al TryStartNoGCRegion método y solo debe llamar al EndNoGCRegion método si el tiempo de ejecución no está actualmente en modo de latencia de región de GC. En otras palabras, no debe llamar TryStartNoGCRegion varias veces (después de la primera llamada al método, las llamadas posteriores no se realizarán correctamente) y no debe esperar que las llamadas se EndNoGCRegion realicen correctamente solo porque la primera llamada a TryStartNoGCRegion se realizó correctamente.

Para salir del modo de latencia de la región sin GC, llame al EndNoGCRegion método .

Consulte también

Se aplica a

TryStartNoGCRegion(Int64, Boolean)

Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs

Intenta suspender la recolección de elementos no usados durante la ejecución de una ruta crítica si una cantidad especificada de memoria está disponible y controla si el recolector de elementos no usados realiza una recolección de elementos no usados de bloqueo completa si no hay suficiente memoria disponible inicialmente.

public:
 static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, disallowFullBlockingGC As Boolean) As Boolean

Parámetros

totalSize
Int64

La cantidad de memoria en bytes que se asignan sin desencadenar una recolección. Debe ser menor o igual que el tamaño de un segmento efímero. Para saber más sobre el tamaño de un segmento efímero, vea la sección "Generaciones y segmentos efímeros" del artículo Fundamentos de la recolección de elementos no utilizados.

disallowFullBlockingGC
Boolean

true para omitir una recolección de elementos no utilizados de bloqueo completa si el recolector de elementos no utilizados no puede asignar inicialmente totalSize bytes; en caso contrario, false.

Devoluciones

true si el tiempo de ejecución pudo confirmar la cantidad necesaria de memoria y el recolector de elementos no utilizados puede entrar en el modo de no latencia en la región GC; en caso contrario, false.

Atributos

Excepciones

totalSize supera el tamaño del segmento efímero.

El proceso ya está en modo de no latencia de región de GC.

Comentarios

El TryStartNoGCRegion(Int64, Boolean) método intenta colocar el recolector de elementos no utilizados en ningún modo de latencia de región de GC, lo que no permite la recolección de elementos no utilizados mientras una aplicación ejecuta una región crítica del código. Si el tiempo de ejecución no puede asignar inicialmente la cantidad de memoria solicitada y el disallowFullBlockingGC argumento es false, el recolector de elementos no utilizados realiza una recolección completa de elementos no utilizados de bloqueo en un intento de liberar memoria adicional; de lo contrario, se produce un error en la asignación y el método devuelve false. El recolector de elementos no utilizados no entra en modo de latencia de región de GC si puede asignar la cantidad de memoria necesaria, que en este caso es realmente 2 * totalSize (intenta asignar totalSize el montón de objetos pequeños y totalSize para el montón de objetos grandes).

totalSize debe ser lo suficientemente grande como para controlar todas las asignaciones de memoria que se producen en la ruta de acceso crítica. Esto incluye las asignaciones de la aplicación, así como las asignaciones que realiza el tiempo de ejecución en nombre de la aplicación.

Establecer disallowFullBlockingGC en true para evitar una recolección completa de elementos no utilizados de bloqueo si no hay suficiente memoria disponible inicialmente es más útil en escenarios de equilibrio de carga: un sistema puede llamar a este método y notificarse como listo para aceptar solicitudes si devuelve truey hacer que el equilibrador de carga redirija las solicitudes a otros sistemas si devuelve false. A continuación, puede realizar una recolección de elementos no utilizados de bloqueo completa cuando no controla las solicitudes llamando al Collect(Int32, GCCollectionMode, Boolean, Boolean) método .

Importante

No puede anidar llamadas al TryStartNoGCRegion método y solo debe llamar al EndNoGCRegion método si el tiempo de ejecución no está actualmente en modo de latencia de región de GC. En otras palabras, no debe llamar TryStartNoGCRegion varias veces (después de la primera llamada al método, las llamadas posteriores no se realizarán correctamente) y no debe esperar que las llamadas se EndNoGCRegion realicen correctamente solo porque la primera llamada a TryStartNoGCRegion se realizó correctamente.

Para salir del modo de latencia de la región sin GC, llame al EndNoGCRegion método .

Consulte también

Se aplica a

TryStartNoGCRegion(Int64)

Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs

Intenta suspender la recolección de elementos durante la ejecución de una ruta crítica si una cantidad específica de memoria está disponible.

public:
 static bool TryStartNoGCRegion(long totalSize);
public static bool TryStartNoGCRegion (long totalSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize);
static member TryStartNoGCRegion : int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long) As Boolean

Parámetros

totalSize
Int64

La cantidad de memoria en bytes que se asignan sin desencadenar una recolección. Debe ser menor o igual que el tamaño de un segmento efímero. Para saber más sobre el tamaño de un segmento efímero, vea la sección "Generaciones y segmentos efímeros" del artículo Fundamentos de la recolección de elementos no utilizados.

Devoluciones

true si el tiempo de ejecución pudo confirmar la cantidad necesaria de memoria y el recolector de elementos no utilizados puede entrar en el modo de no latencia en la región GC; en caso contrario, false.

Atributos

Excepciones

totalSize supera el tamaño del segmento efímero.

El proceso ya está en modo de no latencia de región de GC.

Comentarios

El TryStartNoGCRegion(Int64) método intenta colocar el recolector de elementos no utilizados en ningún modo de latencia de región de GC, lo que no permite la recolección de elementos no utilizados mientras una aplicación ejecuta una región crítica del código. Si el tiempo de ejecución no puede asignar inicialmente la cantidad de memoria solicitada, el recolector de elementos no utilizados realiza una recolección completa de elementos no utilizados de bloqueo en un intento de liberar memoria adicional. El recolector de elementos no utilizados no entra en modo de latencia de región de GC si puede asignar la cantidad de memoria necesaria, que en este caso es realmente de 2 * totalSize bytes (intenta asignar totalSize bytes para el montón de objetos pequeños y totalSize bytes para el montón de objetos grandes).

totalSize debe ser lo suficientemente grande como para controlar todas las asignaciones de memoria que se producen en la ruta de acceso crítica. Esto incluye las asignaciones de la aplicación, así como las asignaciones que realiza el tiempo de ejecución en nombre de la aplicación.

Importante

No puede anidar llamadas al TryStartNoGCRegion método y solo debe llamar al EndNoGCRegion método si el tiempo de ejecución no está actualmente en modo de latencia de región de GC. En otras palabras, no debe llamar TryStartNoGCRegion varias veces (después de la primera llamada al método, las llamadas posteriores no se realizarán correctamente) y no debe esperar que las llamadas se EndNoGCRegion realicen correctamente solo porque la primera llamada a TryStartNoGCRegion se realizó correctamente.

Para salir del modo de latencia de la región sin GC, llame al EndNoGCRegion método .

Consulte también

Se aplica a