GC.AddMemoryPressure(Int64) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Informa al tiempo de ejecución de una asignación grande de memoria no administrada que se debe tener en cuenta al programar la recolección de elementos no utilizados.
public:
static void AddMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void AddMemoryPressure (long bytesAllocated);
public static void AddMemoryPressure (long bytesAllocated);
[<System.Security.SecurityCritical>]
static member AddMemoryPressure : int64 -> unit
static member AddMemoryPressure : int64 -> unit
Public Shared Sub AddMemoryPressure (bytesAllocated As Long)
Parámetros
- bytesAllocated
- Int64
Cantidad incremental de memoria no administrada que se ha asignado.
- Atributos
Excepciones
bytesAllocated
es menor o igual que 0.
o bien
En un equipo de 32 bits, bytesAllocated
es mayor que Int32.MaxValue.
Comentarios
Para determinar cuándo programar la recolección de elementos no utilizados, el tiempo de ejecución tiene en cuenta la cantidad de memoria administrada asignada. Si un objeto administrado pequeño asigna una gran cantidad de memoria no administrada, el tiempo de ejecución solo tiene en cuenta la memoria administrada y, por tanto, subestima la urgencia de programar la recolección de elementos no utilizados. El AddMemoryPressure método informa al tiempo de ejecución de esta presión adicional sobre la memoria del sistema.
Los AddMemoryPressure métodos y RemoveMemoryPressure mejoran el rendimiento solo para los tipos que dependen exclusivamente de los finalizadores para liberar los recursos no administrados. No es necesario usar estos métodos en los tipos que siguen el patrón dispose, donde los finalizadores se usan para limpiar los recursos no administrados solo en caso de que un consumidor del tipo olvide llamar Dispose
a . Para obtener más información sobre la finalización de objetos y el patrón dispose, consulte Limpieza de recursos no administrados.
En el patrón de uso más sencillo, un objeto administrado asigna memoria no administrada en el constructor y lo libera en el Finalize
método . Llame al AddMemoryPressure método después de asignar la memoria no administrada y llame al RemoveMemoryPressure método después de liberarlo.
En escenarios más complicados, donde la asignación de memoria no administrada cambia sustancialmente durante la vigencia del objeto administrado, puede llamar a los AddMemoryPressure métodos y RemoveMemoryPressure para comunicar estos cambios incrementales al tiempo de ejecución.
Precaución
Debe asegurarse de quitar exactamente la cantidad de presión que agregue. Si no lo hace, puede afectar negativamente al rendimiento del sistema en las aplicaciones que se ejecutan durante largos períodos de tiempo.