GC.RemoveMemoryPressure(Int64) Método

Definição

Informa o runtime de que a memória não gerida foi libertada e já não precisa de ser tida em conta ao agendar a recolha do lixo.

public:
 static void RemoveMemoryPressure(long bytesAllocated);
[System.Security.SecurityCritical]
public static void RemoveMemoryPressure(long bytesAllocated);
public static void RemoveMemoryPressure(long bytesAllocated);
[<System.Security.SecurityCritical>]
static member RemoveMemoryPressure : int64 -> unit
static member RemoveMemoryPressure : int64 -> unit
Public Shared Sub RemoveMemoryPressure (bytesAllocated As Long)

Parâmetros

bytesAllocated
Int64

A quantidade de memória não gerida que foi libertada.

Atributos

Exceções

bytesAllocated é menor ou igual a 0.

-ou-

Num computador de 32 bits, bytesAllocated é maior do que o Int32.MaxValue.

Observações

O padrão comum para libertar recursos nativos é através do finalizador de um tipo. Se um objeto gerido usar memória nativa, pode libertar essa memória nativa no seu finalizador. O coletor de lixo só conhece a memória gerida e agenda as recolhas com base nesse conhecimento. Imagine um cenário em que um pequeno objeto gerido está associado a uma grande quantidade de uso de memória nativa, e esse objeto gerido agora vive na geração 2. Um GC gen2 pode não acontecer durante algum tempo, o que significa que a grande quantidade de memória nativa só será libertada quando a próxima gen2 acontecer. O runtime fornece os AddMemoryPressure métodos RemoveMemoryPressure e métodos para ajudar neste cenário. O tempo de execução mantém um registo interno de quanta pressão de memória estas APIs adicionaram e removeram, e aciona um GC gen2 se considerado produtivo. Portanto, isto não é uma funcionalidade do GC, mas sim algo que o tempo de execução fornece para ativar os GCs.

Os AddMemoryPressure métodos and RemoveMemoryPressure melhoram o desempenho apenas para tipos que dependem exclusivamente de finalizadores para libertar os recursos não geridos. Não é necessário usar estes métodos em tipos que seguem o padrão descarte, onde os finalizadores são usados para limpar recursos não geridos apenas no caso de um consumidor desse tipo se esquecer de chamar Dispose. Para obter mais informações sobre a finalização de objetos e o padrão de descarte, consulte Limpando recursos não gerenciados.

No padrão de utilização mais simples, um objeto gerido aloca memória não gerida no construtor e liberta-a no Finalize método. Chame o AddMemoryPressure método depois de alocar a memória não gerida e chame o RemoveMemoryPressure método depois de a libertar.

Em cenários mais complexos, onde a alocação de memória não gerida muda substancialmente durante a vida útil do objeto gerido, pode chamar os AddMemoryPressure métodos e RemoveMemoryPressure para comunicar estas alterações incrementais ao tempo de execução.

Atenção

Deve garantir que remove exatamente a quantidade de pressão que adiciona. Não o fazer pode afetar negativamente o desempenho do sistema em aplicações que funcionam durante longos períodos.

Aplica-se a