Sdílet prostřednictvím


GC.WaitForFullGCApproach Metoda

Definice

Vrátí stav registrovaného oznámení pro určení, zda hrozí úplné blokování uvolňování paměti modulem ClR (Common Language Runtime).

Přetížení

WaitForFullGCApproach()

Vrátí stav registrovaného oznámení pro určení, zda hrozí úplné blokování uvolňování paměti modulem ClR (Common Language Runtime).

WaitForFullGCApproach(Int32)

Vrátí stav registrovaného oznámení v zadaném časovém limitu pro určení, zda hrozí úplné blokování uvolňování paměti modulem CLR (Common Language Runtime).

WaitForFullGCApproach(TimeSpan)

Vrátí stav registrovaného oznámení v zadaném časovém limitu pro určení, zda hrozí úplné blokování uvolňování paměti modulem CLR (Common Language Runtime).

WaitForFullGCApproach()

Zdroj:
GC.CoreCLR.cs
Zdroj:
GC.CoreCLR.cs
Zdroj:
GC.CoreCLR.cs

Vrátí stav registrovaného oznámení pro určení, zda hrozí úplné blokování uvolňování paměti modulem ClR (Common Language Runtime).

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

Návraty

Stav oznámení registrovaného uvolnění paměti.

Atributy

Příklady

Následující příklad ukazuje, jak použít tuto metodu k určení, zda se blíží úplné blokování uvolňování paměti. Pokaždé, když je Succeededstav oznámení , je volána metoda OnFullGCApproachNotify uživatele, která provede akce v reakci na blížící se kolekci. Tento příklad kódu je součástí většího příkladu pro téma Oznámení o uvolňování paměti .

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

Poznámky

Pomocí výčtu GCNotificationStatus vráceného touto metodou určete stav aktuálního oznámení o uvolňování paměti, které bylo zaregistrováno pomocí RegisterForFullGCNotification metody . Můžete také použít metodu WaitForFullGCComplete k určení, zda bylo dokončeno úplné uvolňování paměti.

Když výčet vrátí Succeeded, můžete provádět úlohy, jako je například zabránění přidělení dalších objektů a vytvoření kolekce sami pomocí Collect metody . Všimněte si, že oznámení nezaručuje, že dojde k úplnému uvolňování paměti, pouze že podmínky dosáhly prahové hodnoty, které jsou příznivé pro úplné uvolňování paměti.

Tato metoda čeká po neomezenou dobu na získání oznámení o uvolňování paměti. Chcete-li zadat časový limit pro metodu vrátit, pokud nelze získat oznámení, použijte GC.WaitForFullGCApproach(Int32) přetížení metody. Pokud tuto metodu voláte bez zadání časového limitu, můžete metodu CancelFullGCNotification volat, pokud čekáte déle, než je upřednostňované.

Měli byste postupovat podle této metody s voláním WaitForFullGCComplete metody , abyste se ujistili, že došlo k úplnému uvolňování paměti. Volání samotné této metody způsobí neurčité výsledky.

Viz také

Platí pro

WaitForFullGCApproach(Int32)

Zdroj:
GC.CoreCLR.cs
Zdroj:
GC.CoreCLR.cs
Zdroj:
GC.CoreCLR.cs

Vrátí stav registrovaného oznámení v zadaném časovém limitu pro určení, zda hrozí úplné blokování uvolňování paměti modulem CLR (Common Language Runtime).

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

Doba čekání, než bude možné získat stav oznámení. Pokud chcete čekat neomezeně dlouho, zadejte -1.

Návraty

Stav oznámení registrovaného uvolnění paměti.

Atributy

Výjimky

millisecondsTimeout Musí být nezáporná nebo menší nebo rovna hodnotě Int32.MaxValue nebo -1.

Poznámky

Pomocí výčtu GCNotificationStatus vráceného touto metodou určete stav aktuálního oznámení o uvolňování paměti, které bylo zaregistrováno pomocí RegisterForFullGCNotification metody . Můžete také použít metodu WaitForFullGCComplete k určení, zda bylo dokončeno úplné uvolňování paměti.

Všimněte si, že tato metoda vrátí okamžitě při každém získání stavu oznámení o uvolňování paměti bez ohledu na hodnotu určenou parametrem millisecondsTimeout. Pokud není získán stav oznámení o uvolňování paměti před millisecondsTimeout vypršením časového limitu, vrátí NotApplicabletato metoda .

Když výčet vrátí Succeeded, můžete provádět úlohy, jako je například zabránění přidělení dalších objektů a vytvoření kolekce sami pomocí Collect metody . Všimněte si, že oznámení nezaručuje, že dojde k úplnému uvolňování paměti, pouze že podmínky dosáhly prahové hodnoty, které jsou příznivé pro úplné uvolňování paměti.

Pokud nemůžete čekat na uplynutí časového limitu, můžete volat CancelFullGCNotification metodu .

Měli byste postupovat podle této metody s voláním WaitForFullGCComplete metody , abyste se ujistili, že došlo k úplnému uvolňování paměti. Volání samotné této metody způsobí neurčité výsledky.

Viz také

Platí pro

WaitForFullGCApproach(TimeSpan)

Zdroj:
GC.cs
Zdroj:
GC.cs
Zdroj:
GC.cs

Vrátí stav registrovaného oznámení v zadaném časovém limitu pro určení, zda hrozí úplné blokování uvolňování paměti modulem CLR (Common Language Runtime).

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

Vypršení časového limitu při čekání na úplný přístup uvolňování paměti

Návraty

Stav registrovaného úplného oznámení uvolňování paměti

Platí pro