GC.WaitForFullGCApproach Metoda

Definicja

Zwraca stan zarejestrowanego powiadomienia w celu określenia, czy pełne blokowanie odzyskiwania pamięci przez środowisko uruchomieniowe języka wspólnego jest nieuchronne.

Przeciążenia

WaitForFullGCApproach()

Zwraca stan zarejestrowanego powiadomienia w celu określenia, czy pełne blokowanie odzyskiwania pamięci przez środowisko uruchomieniowe języka wspólnego jest nieuchronne.

WaitForFullGCApproach(Int32)

Zwraca w określonym przedziale czasu stan zarejestrowanego powiadomienia w celu określenia, czy pełne blokowanie odzyskiwania pamięci przez środowisko uruchomieniowe języka wspólnego jest nieuchronne.

WaitForFullGCApproach(TimeSpan)

Zwraca w określonym przedziale czasu stan zarejestrowanego powiadomienia w celu określenia, czy pełne blokowanie odzyskiwania pamięci przez środowisko uruchomieniowe języka wspólnego jest nieuchronne.

WaitForFullGCApproach()

Źródło:
GC.CoreCLR.cs
Źródło:
GC.CoreCLR.cs
Źródło:
GC.CoreCLR.cs

Zwraca stan zarejestrowanego powiadomienia w celu określenia, czy pełne blokowanie odzyskiwania pamięci przez środowisko uruchomieniowe języka wspólnego jest nieuchronne.

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

Zwraca

Stan zarejestrowanego powiadomienia o wyrzucaniu elementów bezużytecznych.

Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak za pomocą tej metody określić, czy zbliża się pełne blokowanie odzyskiwania pamięci. Za każdym razem, gdy stan powiadomienia to Succeeded, metoda OnFullGCApproachNotify użytkownika jest wywoływana w celu wykonania akcji w odpowiedzi na zbliżającą się kolekcję. Ten przykład kodu jest częścią większego przykładu przedstawionego w temacie Powiadomienia dotyczące odzyskiwania pamięci .

// 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

Uwagi

GCNotificationStatus Użyj wyliczenia zwróconego przez tę metodę, aby określić stan bieżącego powiadomienia odzyskiwania pamięci, które zostało zarejestrowane przy użyciu RegisterForFullGCNotification metody . Można również użyć metody , WaitForFullGCComplete aby określić, czy pełne odzyskiwanie pamięci zostało ukończone.

Gdy wyliczenie zwraca Succeededwartość , można wykonywać zadania, takie jak zapobieganie przydzielaniu dodatkowych obiektów i samodzielne tworzenie kolekcji za pomocą Collect metody . Należy pamiętać, że powiadomienie nie gwarantuje, że nastąpi pełne odzyskiwanie pamięci, tylko że warunki osiągną próg, który jest korzystny dla pełnego odzyskiwania pamięci.

Ta metoda czeka na uzyskanie powiadomienia o odśmieceniu pamięci przez czas nieokreślony. Jeśli chcesz określić limit czasu dla metody, która ma zostać zwrócona, jeśli nie można uzyskać powiadomienia, użyj GC.WaitForFullGCApproach(Int32) przeciążenia metody. Jeśli wywołasz tę metodę bez określenia limitu czasu, możesz wywołać CancelFullGCNotification metodę, jeśli czekasz dłużej niż preferowano.

Należy wykonać tę metodę za pomocą wywołania WaitForFullGCComplete metody , aby upewnić się, że masz pełne odzyskiwanie pamięci. Wywołanie tej samej metody powoduje nieokreślone wyniki.

Zobacz też

Dotyczy

WaitForFullGCApproach(Int32)

Źródło:
GC.CoreCLR.cs
Źródło:
GC.CoreCLR.cs
Źródło:
GC.CoreCLR.cs

Zwraca w określonym przedziale czasu stan zarejestrowanego powiadomienia w celu określenia, czy pełne blokowanie odzyskiwania pamięci przez środowisko uruchomieniowe języka wspólnego jest nieuchronne.

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

Parametry

millisecondsTimeout
Int32

Czas oczekiwania przed uzyskaniem stanu powiadomienia. Określ wartość -1, aby czekać na czas nieokreślony.

Zwraca

Stan zarejestrowanego powiadomienia o wyrzucaniu elementów bezużytecznych.

Atrybuty

Wyjątki

millisecondsTimeout wartość musi być nie ujemna lub mniejsza niż lub równa int32.MaxValue lub -1.

Uwagi

GCNotificationStatus Użyj wyliczenia zwróconego przez tę metodę, aby określić stan bieżącego powiadomienia odzyskiwania pamięci, które zostało zarejestrowane przy użyciu RegisterForFullGCNotification metody . Można również użyć metody , WaitForFullGCComplete aby określić, czy pełne odzyskiwanie pamięci zostało ukończone.

Należy pamiętać, że ta metoda jest zwracana natychmiast za każdym razem, gdy zostanie uzyskany stan powiadomienia o odśmieceniu pamięci, niezależnie od wartości określonej przez millisecondsTimeout. Jeśli stan powiadomienia odzyskiwania pamięci nie zostanie uzyskany przed millisecondsTimeout upływem limitu czasu, ta metoda zwraca wartość NotApplicable.

Gdy wyliczenie zwraca Succeededwartość , można wykonywać zadania, takie jak zapobieganie przydzielaniu dodatkowych obiektów i samodzielne tworzenie kolekcji za pomocą Collect metody . Należy pamiętać, że powiadomienie nie gwarantuje, że nastąpi pełne odzyskiwanie pamięci, tylko że warunki osiągną próg, który jest korzystny dla pełnego odzyskiwania pamięci.

Możesz wywołać metodę CancelFullGCNotification , gdy nie można poczekać na upłynięcie limitu czasu.

Należy wykonać tę metodę za pomocą wywołania WaitForFullGCComplete metody , aby upewnić się, że masz pełne odzyskiwanie pamięci. Wywołanie tej samej metody powoduje nieokreślone wyniki.

Zobacz też

Dotyczy

WaitForFullGCApproach(TimeSpan)

Źródło:
GC.cs
Źródło:
GC.cs
Źródło:
GC.cs

Zwraca w określonym przedziale czasu stan zarejestrowanego powiadomienia w celu określenia, czy pełne blokowanie odzyskiwania pamięci przez środowisko uruchomieniowe języka wspólnego jest nieuchronne.

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

Parametry

timeout
TimeSpan

Limit czasu oczekiwania na pełne podejście GC

Zwraca

Stan zarejestrowanego pełnego powiadomienia GC

Dotyczy