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.
Комментарии
При определении времени планирования сборки мусора среда выполнения учитывает объем выделенной управляемой памяти. Если небольшой управляемый объект выделяет большой объем неуправляемой памяти, среда выполнения учитывает только управляемую память и, таким образом, недооценивает необходимость планирования сборки мусора. Метод AddMemoryPressure информирует среду выполнения о дополнительной нагрузке на системную память.
Методы AddMemoryPressure и RemoveMemoryPressure повышают производительность только для типов, которые зависят исключительно от методов завершения для освобождения неуправляемых ресурсов. Нет необходимости использовать эти методы в типах, которые соответствуют шаблону удаления, где методы завершения используются для очистки неуправляемых ресурсов только в том случае, если потребитель типа забыл вызвать Dispose
. Дополнительные сведения о завершении объектов и шаблоне удаления см. в разделе Очистка неуправляемых ресурсов.
В простейшем шаблоне использования управляемый объект выделяет неуправляемую память в конструкторе и освобождает ее в методе Finalize
.
AddMemoryPressure Вызовите метод после выделения неуправляемой памяти и вызовите RemoveMemoryPressure метод после освобождения.
В более сложных сценариях, где выделение неуправляемой памяти существенно изменяется в течение времени существования управляемого объекта, можно вызвать AddMemoryPressure методы и RemoveMemoryPressure для передачи этих добавочных изменений в среду выполнения.
Внимание!
Вы должны убедиться, что вы удаляете именно тот объем давления, который вы добавляете. В противном случае это может отрицательно сказаться на производительности системы в приложениях, которые работают в течение длительного времени.