GC.TryStartNoGCRegion Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Пытается запретить сборку мусора во время выполнения критического пути.
Перегрузки
TryStartNoGCRegion(Int64, Int64, Boolean) |
Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный объем памяти для кучи больших объектов и для кучи маленьких объектов, и устанавливает, будет ли выполняться полная блокирующая сборка мусора, если изначально не хватает памяти. |
TryStartNoGCRegion(Int64, Int64) |
Пытается запретить сборку мусора во время выполнения критического пути, если указанный объем памяти доступен для кучи больших объектов и для кучи маленьких объектов. |
TryStartNoGCRegion(Int64, Boolean) |
Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный объем памяти, и устанавливает, будет ли выполняться полная блокирующая сборка мусора, если изначально не хватает памяти. |
TryStartNoGCRegion(Int64) |
Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный достаточный объем памяти. |
Комментарии
Важно!
Нельзя вложить вызовы TryStartNoGCRegion метода, и его следует вызывать EndNoGCRegion только в том случае, если среда выполнения в настоящее время не находится в режиме задержки региона сборки мусора. Другими словами, вы не должны вызывать TryStartNoGCRegion несколько раз (после первого вызова метода последующие вызовы не будут успешными), и не следует ожидать, что вызовы EndNoGCRegion будут успешными только потому, что TryStartNoGCRegion первый вызов выполнен успешно.
TryStartNoGCRegion(Int64, Int64, Boolean)
Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный объем памяти для кучи больших объектов и для кучи маленьких объектов, и устанавливает, будет ли выполняться полная блокирующая сборка мусора, если изначально не хватает памяти.
public:
static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long, disallowFullBlockingGC As Boolean) As Boolean
Параметры
- totalSize
- Int64
Объем памяти в байтах для выделения без запуска сборки мусора. Значение totalSize
-lohSize
должно быть меньше или равно размеру эфемерного сегмента. Сведения о размере эфемерных сегментов см. в разделе "Эфемерные поколения и сегменты" статьи Основы сборки мусора.
- lohSize
- Int64
Число байтов в totalSize
для назначения кучи больших объектов.
- disallowFullBlockingGC
- Boolean
Значение true
, чтобы пропустить полную блокирующую сборку мусора, если сборщику мусора изначально не удалось выделить указанную память в куче малых и в куче больших объектов; в противном случае — значение false
.
Возвращаемое значение
Значение true
, если среде выполнения удалось зафиксировать необходимый объем памяти и сборщик мусора может перейти в режим задержки без области сборки мусора; в противном случае — значение false
.
- Атрибуты
Исключения
totalSize
- lohSize
превышает размер эфемерного сегмента.
Процесс уже находится в режиме задержки без области сборки мусора.
Комментарии
Метод TryStartNoGCRegion(Int64, Int64, Boolean) пытается поместить сборщик мусора в режим задержки региона сборки мусора, который запрещает сборку мусора, пока приложение выполняет критически важную область кода. Если среде выполнения не удается изначально выделить запрошенный объем памяти и disallowFullBlockingGC
аргумент является, сборщик мусора выполняет полную блокировку сборки мусора при попытке освободить дополнительную память; в противном случае выделение завершается false
ошибкой, а метод возвращает .false
Сборщик мусора не переходит в режим задержки региона сборки мусора, если он может выделить lohSize
для loH и totalSize
- lohSize
для кучи небольших объектов (SOH).
lohSize
должен быть достаточно большим для обработки всех выделений памяти, происходящих в критическом пути для loH, и totalSize
- lohSize
должен быть достаточно большим для обработки всех выделений памяти, происходящих в критическом пути для SOH. Сюда входят выделения приложения, а также выделения, выполняемые средой выполнения от имени приложения.
Параметр disallowFullBlockingGC
, чтобы предотвратить true
полную блокировку сборки мусора, если изначально недостаточно памяти, наиболее полезен в сценариях балансировки нагрузки: одна система может вызвать этот метод и сообщить о себе, как готовы принять запросы, если он возвращается true
, и запросы перенаправления подсистемы балансировки нагрузки в другие системы, если они возвращаются false
. Затем он может выполнить полную блокировку сборки мусора, если она не обрабатывает запросы путем вызова Collect(Int32, GCCollectionMode, Boolean, Boolean) метода.
Важно!
Нельзя вложить вызовы TryStartNoGCRegion метода, и его следует вызывать EndNoGCRegion только в том случае, если среда выполнения в настоящее время не находится в режиме задержки региона сборки мусора. Другими словами, вы не должны вызывать TryStartNoGCRegion несколько раз (после первого вызова метода последующие вызовы не будут успешными), и не следует ожидать, что вызовы EndNoGCRegion будут успешными только потому, что TryStartNoGCRegion первый вызов выполнен успешно.
Вы выходите из режима задержки региона сборки мусора EndNoGCRegion без вызова метода.
См. также раздел
Применяется к
TryStartNoGCRegion(Int64, Int64)
Пытается запретить сборку мусора во время выполнения критического пути, если указанный объем памяти доступен для кучи больших объектов и для кучи маленьких объектов.
public:
static bool TryStartNoGCRegion(long totalSize, long lohSize);
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
static member TryStartNoGCRegion : int64 * int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long) As Boolean
Параметры
- totalSize
- Int64
Объем памяти в байтах для выделения без запуска сборки мусора. Значение totalSize
-lohSize
должно быть меньше или равно размеру эфемерного сегмента. Сведения о размере эфемерных сегментов см. в разделе "Эфемерные поколения и сегменты" статьи Основы сборки мусора.
- lohSize
- Int64
Число байтов в totalSize
для назначения кучи больших объектов.
Возвращаемое значение
Значение true
, если среде выполнения удалось зафиксировать необходимый объем памяти и сборщик мусора может перейти в режим задержки без области сборки мусора; в противном случае — значение false
.
- Атрибуты
Исключения
totalSize
- lohSize
превышает размер эфемерного сегмента.
Процесс уже находится в режиме задержки без области сборки мусора.
Комментарии
Метод TryStartNoGCRegion(Int64, Int64) пытается поместить сборщик мусора в режим задержки региона сборки мусора, который запрещает сборку мусора, пока приложение выполняет критически важную область кода. Если среде выполнения не удается изначально выделить запрошенный объем памяти, сборщик мусора выполняет полную блокировку сборки мусора при попытке освободить дополнительную память. Сборщик мусора не переходит в режим задержки региона сборки мусора, если он может выделить lohSize
для loH и totalSize
- lohSize
для кучи небольших объектов (SOH).
lohSize
должен быть достаточно большим для обработки всех выделений памяти, происходящих в критическом пути для loH, и totalSize
- lohSize
должен быть достаточно большим для обработки всех выделений памяти, происходящих в критическом пути для SOH. Сюда входят выделения приложения, а также выделения, выполняемые средой выполнения от имени приложения.
Важно!
Нельзя вложить вызовы TryStartNoGCRegion метода, и его следует вызывать EndNoGCRegion только в том случае, если среда выполнения в настоящее время не находится в режиме задержки региона сборки мусора. Другими словами, вы не должны вызывать TryStartNoGCRegion несколько раз (после первого вызова метода последующие вызовы не будут успешными), и не следует ожидать, что вызовы EndNoGCRegion будут успешными только потому, что TryStartNoGCRegion первый вызов выполнен успешно.
Вы выходите из режима задержки региона сборки мусора EndNoGCRegion без вызова метода.
См. также раздел
Применяется к
TryStartNoGCRegion(Int64, Boolean)
Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный объем памяти, и устанавливает, будет ли выполняться полная блокирующая сборка мусора, если изначально не хватает памяти.
public:
static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, disallowFullBlockingGC As Boolean) As Boolean
Параметры
- totalSize
- Int64
Объем памяти в байтах для выделения без запуска сборки мусора. Он должен быть меньше или равен размеру временного сегмента. Сведения о размере эфемерных сегментов см. в разделе "Эфемерные поколения и сегменты" статьи Основы сборки мусора.
- disallowFullBlockingGC
- Boolean
Значение true
, чтобы пропустить полную блокирующую сборку мусора, если сборщику мусора изначально не удалось выделить totalSize
байтов; в противном случае — значение false
.
Возвращаемое значение
Значение true
, если среде выполнения удалось зафиксировать необходимый объем памяти и сборщик мусора может перейти в режим задержки без области сборки мусора; в противном случае — значение false
.
- Атрибуты
Исключения
totalSize
превышает размер эфемерного сегмента.
Процесс уже находится в режиме задержки без области сборки мусора.
Комментарии
Метод TryStartNoGCRegion(Int64, Boolean) пытается поместить сборщик мусора в режим задержки региона сборки мусора, который запрещает сборку мусора, пока приложение выполняет критически важную область кода. Если среде выполнения не удается изначально выделить запрошенный объем памяти и disallowFullBlockingGC
аргумент является, сборщик мусора выполняет полную блокировку сборки мусора при попытке освободить дополнительную память; в противном случае выделение завершается false
ошибкой, а метод возвращает .false
Сборщик мусора не переходит в режим задержки региона сборки мусора, если он может выделить необходимый объем памяти, который в данном случае фактически равен 2 * totalSize
(он пытается выделить totalSize
для небольшой кучи объектов и totalSize
для кучи больших объектов).
totalSize
должен быть достаточно большим для обработки всех выделений памяти, происходящих в критическом пути. Сюда входят выделения приложения, а также выделения, выполняемые средой выполнения от имени приложения.
Параметр disallowFullBlockingGC
, чтобы предотвратить true
полную блокировку сборки мусора, если изначально недостаточно памяти, наиболее полезен в сценариях балансировки нагрузки: одна система может вызвать этот метод и сообщить о себе, как готовы принять запросы, если он возвращается true
, и запросы перенаправления подсистемы балансировки нагрузки в другие системы, если они возвращаются false
. Затем он может выполнить полную блокировку сборки мусора, если она не обрабатывает запросы путем вызова Collect(Int32, GCCollectionMode, Boolean, Boolean) метода.
Важно!
Нельзя вложить вызовы TryStartNoGCRegion метода, и его следует вызывать EndNoGCRegion только в том случае, если среда выполнения в настоящее время не находится в режиме задержки региона сборки мусора. Другими словами, вы не должны вызывать TryStartNoGCRegion несколько раз (после первого вызова метода последующие вызовы не будут успешными), и не следует ожидать, что вызовы EndNoGCRegion будут успешными только потому, что TryStartNoGCRegion первый вызов выполнен успешно.
Вы выходите из режима задержки региона сборки мусора EndNoGCRegion без вызова метода.
См. также раздел
Применяется к
TryStartNoGCRegion(Int64)
Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный достаточный объем памяти.
public:
static bool TryStartNoGCRegion(long totalSize);
public static bool TryStartNoGCRegion (long totalSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize);
static member TryStartNoGCRegion : int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long) As Boolean
Параметры
- totalSize
- Int64
Объем памяти в байтах для выделения без запуска сборки мусора. Он должен быть меньше или равен размеру временного сегмента. Сведения о размере эфемерных сегментов см. в разделе "Эфемерные поколения и сегменты" статьи Основы сборки мусора.
Возвращаемое значение
Значение true
, если среде выполнения удалось зафиксировать необходимый объем памяти и сборщик мусора может перейти в режим задержки без области сборки мусора; в противном случае — значение false
.
- Атрибуты
Исключения
totalSize
превышает размер эфемерного сегмента.
Процесс уже находится в режиме задержки без области сборки мусора.
Комментарии
Метод TryStartNoGCRegion(Int64) пытается поместить сборщик мусора в режим задержки региона сборки мусора, который запрещает сборку мусора, пока приложение выполняет критически важную область кода. Если среде выполнения не удается изначально выделить запрошенный объем памяти, сборщик мусора выполняет полную блокировку сборки мусора при попытке освободить дополнительную память. Сборщик мусора не переходит в режим задержки региона сборки мусора, если он может выделить необходимый объем памяти, который в данном случае на самом деле составляет 2 * totalSize
байт (он пытается выделить totalSize
байты для кучи небольших объектов и totalSize
байтов для кучи больших объектов).
totalSize
должен быть достаточно большим для обработки всех выделений памяти, происходящих в критическом пути. Сюда входят выделения приложения, а также выделения, выполняемые средой выполнения от имени приложения.
Важно!
Нельзя вложить вызовы TryStartNoGCRegion метода, и его следует вызывать EndNoGCRegion только в том случае, если среда выполнения в настоящее время не находится в режиме задержки региона сборки мусора. Другими словами, вы не должны вызывать TryStartNoGCRegion несколько раз (после первого вызова метода последующие вызовы не будут успешными), и не следует ожидать, что вызовы EndNoGCRegion будут успешными только потому, что TryStartNoGCRegion первый вызов выполнен успешно.
Вы выходите из режима задержки региона сборки мусора EndNoGCRegion без вызова метода.