GC.WaitForFullGCApproach Método

Definição

Retorna o status de uma notificação registrada para determinar se uma coleta de lixo completa e de bloqueio pelo common language runtime é iminente.

Sobrecargas

Nome Description
WaitForFullGCApproach()

Retorna o status de uma notificação registrada para determinar se uma coleta de lixo completa e de bloqueio pelo common language runtime é iminente.

WaitForFullGCApproach(Int32)

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo completa e bloqueada pelo common language runtime é iminente.

WaitForFullGCApproach(TimeSpan)

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo completa e bloqueada pelo common language runtime é iminente.

WaitForFullGCApproach()

Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs

Retorna o status de uma notificação registrada para determinar se uma coleta de lixo completa e de bloqueio pelo common language runtime é iminente.

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

Retornos

O status da notificação de coleta de lixo registrada.

Atributos

Exemplos

O exemplo a seguir mostra como usar esse método para determinar se uma coleta de lixo completa e de bloqueio está se aproximando. Sempre que o status da notificação é Succeeded, o método OnFullGCApproachNotify do usuário é chamado para executar ações em resposta à coleção que se aproxima. Este exemplo de código faz parte de um exemplo maior fornecido para o tópico Notificações de Coleta de Lixo .

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

Comentários

Use a GCNotificationStatus enumeração retornada por esse método para determinar o status da notificação de coleta de lixo atual que foi registrada usando o RegisterForFullGCNotification método. Você também pode usar o WaitForFullGCComplete método para determinar se a coleta de lixo completa foi concluída.

Quando a enumeração retorna Succeeded, você pode realizar tarefas como impedir que objetos adicionais sejam alocados e induzir uma coleção por conta própria com o Collect método. Observe que a notificação não garante que uma coleta de lixo completa ocorra, apenas que as condições atingiram o limite que é favorável para que uma coleta de lixo completa ocorra.

Esse método aguarda indefinidamente que uma notificação de coleta de lixo seja obtida. Se você quiser especificar um período de tempo limite para o método retornar se a notificação não puder ser obtida, use a sobrecarga do GC.WaitForFullGCApproach(Int32) método. Se você chamar esse método sem especificar um tempo limite, poderá chamar o CancelFullGCNotification método se estiver aguardando mais tempo do que o preferido.

Você deve seguir esse método com uma chamada ao WaitForFullGCComplete método para garantir que você tenha uma coleta de lixo completa. Chamar esse método sozinho causa resultados indeterminados.

Confira também

Aplica-se a

WaitForFullGCApproach(Int32)

Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo completa e bloqueada pelo common language runtime é iminente.

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

Parâmetros

millisecondsTimeout
Int32

O período de espera antes que um status de notificação possa ser obtido. Especifique -1 aguardar indefinidamente.

Retornos

O status da notificação de coleta de lixo registrada.

Atributos

Exceções

millisecondsTimeout deve ser não negativo ou menor ou igual a Int32.MaxValue ou -1.

Comentários

Use a GCNotificationStatus enumeração retornada por esse método para determinar o status da notificação de coleta de lixo atual que foi registrada usando o RegisterForFullGCNotification método. Você também pode usar o WaitForFullGCComplete método para determinar se a coleta de lixo completa foi concluída.

Observe que esse método retorna imediatamente sempre que um status de notificação de coleta de lixo é obtido, independentemente do valor especificado por millisecondsTimeout. Se um status de notificação de coleta de lixo não for obtido antes millisecondsTimeout do tempo limite, esse método retornará NotApplicable.

Quando a enumeração retorna Succeeded, você pode realizar tarefas como impedir que objetos adicionais sejam alocados e induzir uma coleção por conta própria com o Collect método. Observe que a notificação não garante que uma coleta de lixo completa ocorra, apenas que as condições atingiram o limite que é favorável para que uma coleta de lixo completa ocorra.

Você pode chamar o CancelFullGCNotification método quando não pode esperar o período de tempo limite passar.

Você deve seguir esse método com uma chamada ao WaitForFullGCComplete método para garantir que você tenha uma coleta de lixo completa. Chamar esse método sozinho causa resultados indeterminados.

Confira também

Aplica-se a

WaitForFullGCApproach(TimeSpan)

Origem:
GC.cs
Origem:
GC.cs
Origem:
GC.cs
Origem:
GC.cs
Origem:
GC.cs

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo completa e bloqueada pelo common language runtime é iminente.

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

Parâmetros

timeout
TimeSpan

O tempo limite para aguardar uma abordagem completa do GC

Retornos

O status de uma notificação GC completa registrada

Aplica-se a