GC.WaitForFullGCApproach 方法

定义

返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整、阻碍性垃圾回收。

重载

WaitForFullGCApproach()

返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整、阻碍性垃圾回收。

WaitForFullGCApproach(Int32)

在指定的超时期限内,返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整、阻碍性垃圾回收。

WaitForFullGCApproach(TimeSpan)

在指定的超时期限内,返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整、阻碍性垃圾回收。

WaitForFullGCApproach()

Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs

返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整、阻碍性垃圾回收。

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时,将调用 user 方法 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)

Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs
Source:
GC.CoreCLR.cs

在指定的超时期限内,返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整、阻碍性垃圾回收。

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)

Source:
GC.cs
Source:
GC.cs
Source:
GC.cs

在指定的超时期限内,返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整、阻碍性垃圾回收。

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

等待完整 GC 方法的超时

返回

已注册的完整 GC 通知的状态

适用于