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 методы для передачи этих добавочных изменений в среду выполнения.
Предостережение
Необходимо убедиться, что вы удаляете точное количество добавляемого давления. Не удалось это сделать, может негативно повлиять на производительность системы в приложениях, работающих в течение длительного периода времени.