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.

Возвращаемое значение

Boolean

Значение 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 для назначения кучи больших объектов.

Возвращаемое значение

Boolean

Значение 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.

Возвращаемое значение

Boolean

Значение 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

Объем памяти в байтах для выделения без запуска сборки мусора. Он должен быть меньше или равен размеру временного сегмента. Сведения о размере эфемерных сегментов см. в разделе "Эфемерные поколения и сегменты" статьи Основы сборки мусора.

Возвращаемое значение

Boolean

Значение true, если среде выполнения удалось зафиксировать необходимый объем памяти и сборщик мусора может перейти в режим задержки без области сборки мусора; в противном случае — значение false.

Атрибуты

Исключения

totalSize превышает размер эфемерного сегмента.

Процесс уже находится в режиме задержки без области сборки мусора.

Комментарии

Метод TryStartNoGCRegion(Int64) пытается поместить сборщик мусора в режим задержки региона сборки мусора, который запрещает сборку мусора, пока приложение выполняет критически важную область кода. Если среде выполнения не удается изначально выделить запрошенный объем памяти, сборщик мусора выполняет полную блокировку сборки мусора при попытке освободить дополнительную память. Сборщик мусора не переходит в режим задержки региона сборки мусора, если он может выделить необходимый объем памяти, который в данном случае на самом деле составляет 2 * totalSize байт (он пытается выделить totalSize байты для кучи небольших объектов и totalSize байтов для кучи больших объектов).

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

Важно!

Нельзя вложить вызовы TryStartNoGCRegion метода, и его следует вызывать EndNoGCRegion только в том случае, если среда выполнения в настоящее время не находится в режиме задержки региона сборки мусора. Другими словами, вы не должны вызывать TryStartNoGCRegion несколько раз (после первого вызова метода последующие вызовы не будут успешными), и не следует ожидать, что вызовы EndNoGCRegion будут успешными только потому, что TryStartNoGCRegion первый вызов выполнен успешно.

Вы выходите из режима задержки региона сборки мусора EndNoGCRegion без вызова метода.

См. также раздел

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