GC.WaitForFullGCApproach Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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