Прочитать на английском

Поделиться через


GC.WaitForFullGCApproach Метод

Определение

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

Перегрузки

WaitForFullGCApproach()

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

WaitForFullGCApproach(Int32)

Возвращает состояние зарегистрированного уведомления в пределах указанного времени ожидания, чтобы определить, является ли неизбежной полная блокировка сборки мусора средой CLR.

WaitForFullGCApproach(TimeSpan)

Возвращает состояние зарегистрированного уведомления в пределах указанного времени ожидания, чтобы определить, является ли неизбежной полная блокировка сборки мусора средой CLR.

WaitForFullGCApproach()

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

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

public static GCNotificationStatus WaitForFullGCApproach();
[System.Security.SecurityCritical]
public static GCNotificationStatus WaitForFullGCApproach();

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

Состояние зарегистрированного уведомления о сборке мусора.

Атрибуты

Примеры

В следующем примере показано, как использовать этот метод, чтобы определить, приближается ли полная, блокирующая сборку мусора. Всякий раз, когда состояние уведомления равно Succeeded, вызывается пользовательский метод OnFullGCApproachNotify для выполнения действий в ответ на приближающуюся коллекцию. Этот пример кода является частью более крупного примера, приведенного в разделе Уведомления о сборке мусора .

// Check for a notification of an approaching collection.
GCNotificationStatus s = GC.WaitForFullGCApproach();
if (s == GCNotificationStatus.Succeeded)
{
    Console.WriteLine("GC Notification raised.");
    OnFullGCApproachNotify();
}
else if (s == GCNotificationStatus.Canceled)
{
    Console.WriteLine("GC Notification cancelled.");
    break;
}
else
{
    // This can occur if a timeout period
    // is specified for WaitForFullGCApproach(Timeout)
    // or WaitForFullGCComplete(Timeout)
    // and the time out period has elapsed.
    Console.WriteLine("GC Notification not applicable.");
    break;
}

Комментарии

Используйте перечисление GCNotificationStatus , возвращаемое этим методом, чтобы определить состояние текущего уведомления о сборке RegisterForFullGCNotification мусора, зарегистрированного с помощью метода . Можно также использовать метод , WaitForFullGCComplete чтобы определить, завершена ли полная сборка мусора.

Когда перечисление возвращает Succeeded, можно выполнять такие задачи, как предотвращение выделения дополнительных объектов и самостоятельное создание коллекции с помощью Collect метода . Обратите внимание, что уведомление не гарантирует, что произойдет полная сборка мусора, а только то, что условия достигли порогового значения, благоприятного для полной сборки мусора.

Этот метод ожидает получения уведомления о сборке мусора на неопределенный срок. Если вы хотите указать период времени ожидания для возвращаемого метода, если уведомление не удается получить, используйте перегрузку GC.WaitForFullGCApproach(Int32) метода. Если вы вызываете этот метод без указания времени ожидания, вы можете вызвать CancelFullGCNotification метод , если вы ожидаете дольше, чем предпочтительнее.

Этот метод следует использовать с вызовом WaitForFullGCComplete метода , чтобы убедиться, что у вас есть полная сборка мусора. Вызов только этого метода приводит к неопределенным результатам.

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

WaitForFullGCApproach(Int32)

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

Возвращает состояние зарегистрированного уведомления в пределах указанного времени ожидания, чтобы определить, является ли неизбежной полная блокировка сборки мусора средой CLR.

public static GCNotificationStatus WaitForFullGCApproach(int millisecondsTimeout);
[System.Security.SecurityCritical]
public static GCNotificationStatus WaitForFullGCApproach(int millisecondsTimeout);

Параметры

millisecondsTimeout
Int32

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

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

Состояние зарегистрированного уведомления о сборке мусора.

Атрибуты

Исключения

millisecondsTimeout значение должно быть неотрицательно, меньше или равно Int32.MaxValue или -1.

Комментарии

Используйте перечисление GCNotificationStatus , возвращаемое этим методом, чтобы определить состояние текущего уведомления о сборке RegisterForFullGCNotification мусора, зарегистрированного с помощью метода . Можно также использовать метод , WaitForFullGCComplete чтобы определить, завершена ли полная сборка мусора.

Обратите внимание, что этот метод возвращает немедленно при получении состояния уведомления о сборке мусора, независимо от значения, заданного параметром millisecondsTimeout. Если состояние уведомления о сборке мусора не получено до millisecondsTimeout истечения времени ожидания, этот метод возвращает NotApplicable.

Когда перечисление возвращает Succeeded, можно выполнять такие задачи, как предотвращение выделения дополнительных объектов и самостоятельное создание коллекции с помощью Collect метода . Обратите внимание, что уведомление не гарантирует, что произойдет полная сборка мусора, а только то, что условия достигли порогового значения, благоприятного для полной сборки мусора.

Метод можно вызвать, CancelFullGCNotification если не удается дождаться истечения времени ожидания.

Этот метод следует использовать с вызовом WaitForFullGCComplete метода , чтобы убедиться, что у вас есть полная сборка мусора. Вызов только этого метода приводит к неопределенным результатам.

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

WaitForFullGCApproach(TimeSpan)

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

Возвращает состояние зарегистрированного уведомления в пределах указанного времени ожидания, чтобы определить, является ли неизбежной полная блокировка сборки мусора средой CLR.

public static GCNotificationStatus WaitForFullGCApproach(TimeSpan timeout);

Параметры

timeout
TimeSpan

Время ожидания полного подхода сборки мусора

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

Состояние зарегистрированного полного уведомления сборки мусора

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10