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


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();
public static GCNotificationStatus WaitForFullGCApproach ();
[System.Security.SecurityCritical]
public static GCNotificationStatus WaitForFullGCApproach ();
static member WaitForFullGCApproach : unit -> GCNotificationStatus
[<System.Security.SecurityCritical>]
static member WaitForFullGCApproach : unit -> GCNotificationStatus
Public Shared Function WaitForFullGCApproach () As GCNotificationStatus

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

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

Атрибуты

Примеры

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

// Check for a notification of an approaching collection.
GCNotificationStatus s = GC::WaitForFullGCApproach();
if (s == GCNotificationStatus::Succeeded)
{
    Console::WriteLine("GC Notifiction 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;
}
// 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;
}
// Check for a notification of an approaching collection.
match GC.WaitForFullGCApproach() with
| GCNotificationStatus.Succeeded ->
    printfn "GC Notification raised."
    onFullGCApproachNotify ()
    // Check for a notification of a completed collection.
    match GC.WaitForFullGCComplete() with
    | GCNotificationStatus.Succeeded ->
        printfn "GC Notification raised."
        onFullGCCompleteEndNotify ()
    | GCNotificationStatus.Canceled ->
        printfn "GC Notification cancelled."
        broken <- true
    | _ ->
        // Could be a time out.
        printfn "GC Notification not applicable."
        broken <- true
| GCNotificationStatus.Canceled ->
    printfn "GC Notification cancelled."
    broken <- true
| _ ->
    // This can occur if a timeout period
    // is specified for WaitForFullGCApproach(Timeout)
    // or WaitForFullGCComplete(Timeout)
    // and the time out period has elapsed.
    printfn "GC Notification not applicable."
    broken <- true
' Check for a notification of an approaching collection.
Dim s As GCNotificationStatus = GC.WaitForFullGCApproach
If (s = GCNotificationStatus.Succeeded) Then
    Console.WriteLine("GC Notification raised.")
    OnFullGCApproachNotify()
ElseIf (s = GCNotificationStatus.Canceled) Then
    Console.WriteLine("GC Notification cancelled.")
    Exit While
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.")
    Exit While
End If

Комментарии

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

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

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

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

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

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

WaitForFullGCApproach(Int32)

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

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

public:
 static GCNotificationStatus WaitForFullGCApproach(int millisecondsTimeout);
public static GCNotificationStatus WaitForFullGCApproach (int millisecondsTimeout);
[System.Security.SecurityCritical]
public static GCNotificationStatus WaitForFullGCApproach (int millisecondsTimeout);
static member WaitForFullGCApproach : int -> GCNotificationStatus
[<System.Security.SecurityCritical>]
static member WaitForFullGCApproach : int -> GCNotificationStatus
Public Shared Function WaitForFullGCApproach (millisecondsTimeout As Integer) As GCNotificationStatus

Параметры

millisecondsTimeout
Int32

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

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

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

Атрибуты

Исключения

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

Комментарии

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

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

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

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

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

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

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

WaitForFullGCApproach(TimeSpan)

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

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

public:
 static GCNotificationStatus WaitForFullGCApproach(TimeSpan timeout);
public static GCNotificationStatus WaitForFullGCApproach (TimeSpan timeout);
static member WaitForFullGCApproach : TimeSpan -> GCNotificationStatus
Public Shared Function WaitForFullGCApproach (timeout As TimeSpan) As GCNotificationStatus

Параметры

timeout
TimeSpan

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

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

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

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