GC.AddMemoryPressure(Int64) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сообщает среде выполнения большого выделения неуправляемой памяти, которая должна учитываться при планировании сборки мусора.
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)
Параметры
- 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 методы для передачи этих добавочных изменений в среду выполнения.
Предостережение
Необходимо убедиться, что вы удаляете точное количество добавляемого давления. Не удалось это сделать, может негативно повлиять на производительность системы в приложениях, работающих в течение длительного периода времени.