Бөлісу құралы:


GC.RemoveMemoryPressure(Int64) Метод

Определение

Сообщает среде выполнения, что неуправляемая память была освобождена и больше не должна учитываться при планировании сборки мусора.

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)

Параметры

bytesAllocated
Int64

Объем неуправляемой памяти, выпущенной.

Атрибуты

Исключения

bytesAllocated меньше или равно 0.

–или–

На 32-разрядном компьютере bytesAllocated больше , чем Int32.MaxValue.

Комментарии

Распространенный шаблон выпуска собственных ресурсов — это метод завершения типа. Если управляемый объект использует собственную память, он может освободить собственную память в его методе завершения. Сборщик мусора знает только об управляемой памяти и планирует коллекции на основе этих знаний. Представьте себе сценарий, в котором небольшой управляемый объект связан с большим объемом использования собственной памяти, и этот управляемый объект теперь живет в 2-м поколениях. GC 2-го поколения может не произойти в течение некоторого времени, что означает, что большой объем собственной памяти не будет выпущен до следующего поколения 2-го поколения. Среда выполнения предоставляет AddMemoryPressureRemoveMemoryPressure и методы, которые помогут с этим сценарием. Среда выполнения сохраняет внутреннюю запись о том, сколько нагрузки на память эти API добавлены и удалены, и активирует сборку GC 2-го поколения, если считается продуктивной. Таким образом, это не функция GC, а что-то, что среда выполнения предоставляет для активации GCs.

RemoveMemoryPressure Методы AddMemoryPressure повышают производительность только для типов, которые зависят исключительно от методов завершения, чтобы освободить неуправляемые ресурсы. Не обязательно использовать эти методы в типах, которые соответствуют шаблону удаления, где методы завершения используются для очистки неуправляемых ресурсов только в том случае, если потребитель типа забывает вызывать Dispose. Дополнительные сведения о завершении объектов и шаблоне удаления см. в разделе "Очистка неуправляемых ресурсов".

В самом простом шаблоне использования управляемый объект выделяет неуправляемую память в конструкторе и освобождает его в методе Finalize . AddMemoryPressure Вызовите метод после выделения неуправляемой памяти и вызовите RemoveMemoryPressure метод после его освобождения.

В более сложных сценариях, когда неуправляемые выделения памяти существенно изменяются во время существования управляемого объекта, можно вызвать AddMemoryPressure методы и RemoveMemoryPressure методы для передачи этих добавочных изменений в среду выполнения.

Предостережение

Необходимо убедиться, что вы удаляете точное количество добавляемого давления. Не удалось это сделать, может негативно повлиять на производительность системы в приложениях, работающих в течение длительного периода времени.

Применяется к