GC.TryStartNoGCRegion Метод

Определение

Пытается запретить сборку мусора во время выполнения критического пути.

Перегрузки

Имя Описание
TryStartNoGCRegion(Int64, Int64, Boolean)

Пытается запретить сборку мусора во время выполнения критического пути, если указанный объем памяти доступен для большой кучи объектов и небольшой кучы объектов, и определяет, выполняет ли сборщик мусора полную блокировку сборки мусора, если недостаточно памяти изначально доступен.

TryStartNoGCRegion(Int64, Int64)

Пытается запретить сборку мусора во время выполнения критического пути, если указанный объем памяти доступен для большой кучи объектов и кучи небольших объектов.

TryStartNoGCRegion(Int64, Boolean)

Пытается запретить сборку мусора во время выполнения критического пути, если доступно указанное количество памяти, и определяет, выполняет ли сборщик мусора полную блокировку сборки мусора, если недостаточно памяти изначально доступно.

TryStartNoGCRegion(Int64)

Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный объем памяти.

Комментарии

Important

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

TryStartNoGCRegion(Int64, Int64, Boolean)

Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs

Пытается запретить сборку мусора во время выполнения критического пути, если указанный объем памяти доступен для большой кучи объектов и небольшой кучы объектов, и определяет, выполняет ли сборщик мусора полную блокировку сборки мусора, если недостаточно памяти изначально доступен.

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 используемых для выделения больших кучи объектов (LOH).

disallowFullBlockingGC
Boolean

true , чтобы опустить полную блокировку сборки мусора, если сборщик мусора изначально не может выделить указанную память на куче небольших объектов (SOH) и LOH; falseв противном случае .

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

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

Атрибуты

Исключения

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

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

Комментарии

Метод TryStartNoGCRegion(Int64, Int64, Boolean) пытается разместить сборщик мусора в режиме задержки в регионе GC, который запрещает сборку мусора, пока приложение выполняет критически важный регион кода. Если среда выполнения не может первоначально выделить запрошенный объем памяти и disallowFullBlockingGC аргумент являетсяfalse, сборщик мусора выполняет полную блокировку сборки мусора в попытке освободить дополнительную память; в противном случае выделение завершается ошибкой, а метод возвращает.false Сборщик мусора не входит в режим задержки региона GC, если он может выделить lohSize для loH и totalSize - lohSize для небольшой кучы объектов (SOH).

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

Чтобы disallowFullBlockingGC предотвратить полную блокировку сборки мусора, если недостаточно памяти изначально доступно, наиболее полезно в сценариях балансировки нагрузки: одна система может вызывать этот метод и сообщать о себе как готовый к приему запросов, если он возвращаетсяtrue, и иметь запросы перенаправления подсистемы балансировки нагрузки в другие системы, если он возвращаетсяtrue.false Затем он может выполнить полную блокировку сборки мусора, если она не обрабатывает запросы, вызывая Collect(Int32, GCCollectionMode, Boolean, Boolean) метод.

Important

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

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

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

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

TryStartNoGCRegion(Int64, Int64)

Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs

Пытается запретить сборку мусора во время выполнения критического пути, если указанный объем памяти доступен для большой кучи объектов и кучи небольших объектов.

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 используемых для выделения больших кучи объектов (LOH).

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

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

Атрибуты

Исключения

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

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

Комментарии

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

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

Important

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

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

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

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

TryStartNoGCRegion(Int64, Boolean)

Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs

Пытается запретить сборку мусора во время выполнения критического пути, если доступно указанное количество памяти, и определяет, выполняет ли сборщик мусора полную блокировку сборки мусора, если недостаточно памяти изначально доступно.

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 Значение , если среда выполнения смогла зафиксировать необходимый объем памяти и сборщик мусора не сможет ввести режим задержки региона GC; falseв противном случае .

Атрибуты

Исключения

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

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

Комментарии

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

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

Чтобы disallowFullBlockingGC предотвратить полную блокировку сборки мусора, если недостаточно памяти изначально доступно, наиболее полезно в сценариях балансировки нагрузки: одна система может вызывать этот метод и сообщать о себе как готовый к приему запросов, если он возвращаетсяtrue, и иметь запросы перенаправления подсистемы балансировки нагрузки в другие системы, если он возвращаетсяtrue.false Затем он может выполнить полную блокировку сборки мусора, если она не обрабатывает запросы, вызывая Collect(Int32, GCCollectionMode, Boolean, Boolean) метод.

Important

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

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

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

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

TryStartNoGCRegion(Int64)

Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs
Исходный код:
GC.CoreCLR.cs

Пытается запретить сборку мусора во время выполнения критического пути, если доступен указанный объем памяти.

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 Значение , если среда выполнения смогла зафиксировать необходимый объем памяти и сборщик мусора не сможет ввести режим задержки региона GC; falseв противном случае .

Атрибуты

Исключения

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

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

Комментарии

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

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

Important

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

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

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

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