GC.AddMemoryPressure(Int64) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Informa o runtime de uma alocação grande de memória não gerenciada que deve ser levada em conta durante o agendamento da coleta de lixo.
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
O valor incremental de memória não gerenciada alocado.
- Atributos
Exceções
bytesAllocated
é menor ou igual a 0.
- ou -
Em um computador de 32 bits, bytesAllocated
é maior que Int32.MaxValue.
Comentários
Ao determinar quando agendar a coleta de lixo, o runtime leva em conta a quantidade de memória gerenciada alocada. Se um pequeno objeto gerenciado aloca uma grande quantidade de memória não gerenciada, o runtime leva em conta apenas a memória gerenciada e, portanto, subestima a urgência de agendar a coleta de lixo. O AddMemoryPressure método informa o runtime dessa pressão adicional sobre a memória do sistema.
Os AddMemoryPressure métodos e RemoveMemoryPressure melhoram o desempenho apenas para tipos que dependem exclusivamente de finalizadores para liberar os recursos não gerenciados. Não é necessário usar esses métodos em tipos que seguem o padrão de descarte, em que os finalizadores são usados para limpo recursos não gerenciados somente no caso de um consumidor do tipo esquecer de chamar Dispose
. Para obter mais informações sobre a finalização do objeto e o padrão de descarte, consulte Limpando recursos não gerenciados.
No padrão de uso mais simples, um objeto gerenciado aloca memória não gerenciada no construtor e a libera no Finalize
método . Chame o AddMemoryPressure método depois de alocar a memória não gerenciada e chame o RemoveMemoryPressure método depois de liberá-lo.
Em cenários mais complicados, em que a alocação de memória não gerenciada muda substancialmente durante o tempo de vida do objeto gerenciado, você pode chamar os AddMemoryPressure métodos e RemoveMemoryPressure para comunicar essas alterações incrementais ao runtime.
Cuidado
Você deve garantir que remova exatamente a quantidade de pressão adicionada. Não fazer isso pode afetar negativamente o desempenho do sistema em aplicativos que são executados por longos períodos de tempo.