Compartilhar via


GC.TryStartNoGCRegion Método

Definição

Tentar desabilitar a coleta de lixo durante a execução de um caminho crítico.

Sobrecargas

TryStartNoGCRegion(Int64, Int64, Boolean)

Tenta não permitir a coleta de lixo durante a execução de um caminho crítico se há uma quantidade especificada de memória disponível para o heap de objetos grandes e o heap de objetos pequenos e controla se o coletor de lixo faz uma coleta de lixo de bloqueio completo se nenhuma memória suficiente está inicialmente disponível.

TryStartNoGCRegion(Int64, Int64)

Tentar desabilitar a coleta de lixo durante a execução de um caminho crítico se uma quantidade especificada de memória estiver disponível para o heap de objeto grande e o heap de objeto pequeno.

TryStartNoGCRegion(Int64, Boolean)

Tenta não permitir a coleta de lixo durante a execução de um caminho crítico se houver uma quantidade especificada de memória disponível e controla se o coletor de lixo faz uma coleta de lixo de bloqueio completo se nenhuma memória suficiente estiver inicialmente disponível.

TryStartNoGCRegion(Int64)

Tentar desabilitar a coleta de lixo durante a execução de um caminho crítico se uma quantidade especificada de memória estiver disponível.

Comentários

Importante

Você não pode aninhar chamadas para o TryStartNoGCRegion método e só deverá chamar o EndNoGCRegion método se o runtime estiver atualmente em nenhum modo de latência de região GC. Em outras palavras, você não deve chamar TryStartNoGCRegion várias vezes (após a primeira chamada de método, as chamadas subsequentes não serão bem-sucedidas) e você não deve esperar que as chamadas EndNoGCRegion tenham êxito apenas porque a primeira chamada foi TryStartNoGCRegion bem-sucedida.

TryStartNoGCRegion(Int64, Int64, Boolean)

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

Tenta não permitir a coleta de lixo durante a execução de um caminho crítico se há uma quantidade especificada de memória disponível para o heap de objetos grandes e o heap de objetos pequenos e controla se o coletor de lixo faz uma coleta de lixo de bloqueio completo se nenhuma memória suficiente está inicialmente disponível.

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long, disallowFullBlockingGC As Boolean) As Boolean

Parâmetros

totalSize
Int64

A quantidade de memória em bytes a se alocar sem disparar uma coleta de lixo. totalSize - lohSize precisa ser inferior ou igual ao tamanho de um segmento efêmero. Para obter informações sobre o tamanho de um segmento efêmero, consulte a seção "Gerações e segmentos efêmeros" no artigo Conceitos básicos sobre a coleta de lixo.

lohSize
Int64

O número de bytes em totalSize a serem usados para alocações de LOH (heap de objetos grandes).

disallowFullBlockingGC
Boolean

true para omitir uma coleta de lixo de bloqueio completo se o coletor de lixo inicialmente não puder alocar a memória especificada no SOH (heap de objetos pequenos) e no LOH; caso contrário, false.

Retornos

true se o runtime for capaz de confirmar a quantidade necessária de memória e o coletor de lixo for capaz de entrar no modo de latência não região GC; caso contrário, false.

Atributos

Exceções

totalSize - lohSize excede o tamanho do segmento efêmero.

O processo já está em modo de latência não região GC.

Comentários

O TryStartNoGCRegion(Int64, Int64, Boolean) método tenta colocar o coletor de lixo no modo de latência de região GC, que não permite a coleta de lixo enquanto um aplicativo executa uma região crítica de código. Se o runtime não puder alocar inicialmente a quantidade de memória solicitada e o disallowFullBlockingGC argumento for false, o coletor de lixo executará uma coleta de lixo de bloqueio completo na tentativa de liberar memória adicional; caso contrário, a alocação falhará e o método retornará false. O coletor de lixo não entrará no modo de latência da região do GC se for capaz de alocar lohSize para o LOH e totalSize - lohSize para o SOH (heap de objetos pequenos).

lohSize deve ser grande o suficiente para lidar com todas as alocações de memória que ocorrem no caminho crítico para o LOH e totalSize - lohSize deve ser grande o suficiente para lidar com todas as alocações de memória que ocorrem no caminho crítico para o SOH. Isso inclui alocações pelo aplicativo, bem como alocações que o runtime faz em nome do aplicativo.

A configuração disallowFullBlockingGC para true evitar uma coleta de lixo de bloqueio completo se não houver memória suficiente inicialmente disponível é mais útil em cenários de balanceamento de carga: um sistema pode chamar esse método e relatar-se como pronto para aceitar solicitações se retornar truee fazer com que o balanceador de carga redirecione solicitações para outros sistemas se retornar false. Em seguida, ele pode fazer uma coleta de lixo de bloqueio completo quando não está tratando solicitações chamando o Collect(Int32, GCCollectionMode, Boolean, Boolean) método .

Importante

Você não pode aninhar chamadas para o TryStartNoGCRegion método e só deverá chamar o EndNoGCRegion método se o runtime estiver atualmente em nenhum modo de latência de região GC. Em outras palavras, você não deve chamar TryStartNoGCRegion várias vezes (após a primeira chamada de método, as chamadas subsequentes não serão bem-sucedidas) e você não deve esperar que as chamadas EndNoGCRegion tenham êxito apenas porque a primeira chamada foi TryStartNoGCRegion bem-sucedida.

Você sai do modo de latência de região sem GC chamando o EndNoGCRegion método .

Confira também

Aplica-se a

TryStartNoGCRegion(Int64, Int64)

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

Tentar desabilitar a coleta de lixo durante a execução de um caminho crítico se uma quantidade especificada de memória estiver disponível para o heap de objeto grande e o heap de objeto pequeno.

public:
 static bool TryStartNoGCRegion(long totalSize, long lohSize);
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, long lohSize);
static member TryStartNoGCRegion : int64 * int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, lohSize As Long) As Boolean

Parâmetros

totalSize
Int64

A quantidade de memória em bytes a se alocar sem disparar uma coleta de lixo. totalSize - lohSize precisa ser inferior ou igual ao tamanho de um segmento efêmero. Para obter informações sobre o tamanho de um segmento efêmero, consulte a seção "Gerações e segmentos efêmeros" no artigo Conceitos básicos sobre a coleta de lixo.

lohSize
Int64

O número de bytes em totalSize a serem usados para alocações de LOH (heap de objetos grandes).

Retornos

true se o runtime for capaz de confirmar a quantidade necessária de memória e o coletor de lixo for capaz de entrar no modo de latência não região GC; caso contrário, false.

Atributos

Exceções

totalSize - lohSize excede o tamanho do segmento efêmero.

O processo já está em modo de latência não região GC.

Comentários

O TryStartNoGCRegion(Int64, Int64) método tenta colocar o coletor de lixo no modo de latência de região GC, que não permite a coleta de lixo enquanto um aplicativo executa uma região crítica de código. Se o runtime não puder alocar inicialmente a quantidade de memória solicitada, o coletor de lixo executará uma coleta de lixo de bloqueio completo na tentativa de liberar memória adicional. O coletor de lixo não entrará no modo de latência da região do GC se for capaz de alocar lohSize para o LOH e totalSize - lohSize para o SOH (heap de objetos pequenos).

lohSize deve ser grande o suficiente para lidar com todas as alocações de memória que ocorrem no caminho crítico para o LOH e totalSize - lohSize deve ser grande o suficiente para lidar com todas as alocações de memória que ocorrem no caminho crítico para o SOH. Isso inclui alocações pelo aplicativo, bem como alocações que o runtime faz em nome do aplicativo.

Importante

Você não pode aninhar chamadas para o TryStartNoGCRegion método e só deverá chamar o EndNoGCRegion método se o runtime estiver atualmente em nenhum modo de latência de região GC. Em outras palavras, você não deve chamar TryStartNoGCRegion várias vezes (após a primeira chamada de método, as chamadas subsequentes não serão bem-sucedidas) e você não deve esperar que as chamadas EndNoGCRegion tenham êxito apenas porque a primeira chamada foi TryStartNoGCRegion bem-sucedida.

Você sai do modo de latência de região sem GC chamando o EndNoGCRegion método .

Confira também

Aplica-se a

TryStartNoGCRegion(Int64, Boolean)

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

Tenta não permitir a coleta de lixo durante a execução de um caminho crítico se houver uma quantidade especificada de memória disponível e controla se o coletor de lixo faz uma coleta de lixo de bloqueio completo se nenhuma memória suficiente estiver inicialmente disponível.

public:
 static bool TryStartNoGCRegion(long totalSize, bool disallowFullBlockingGC);
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize, bool disallowFullBlockingGC);
static member TryStartNoGCRegion : int64 * bool -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 * bool -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long, disallowFullBlockingGC As Boolean) As Boolean

Parâmetros

totalSize
Int64

A quantidade de memória em bytes a se alocar sem disparar uma coleta de lixo. Ela deve ser menor ou igual ao tamanho de um segmento efêmero. Para obter informações sobre o tamanho de um segmento efêmero, consulte a seção "Gerações e segmentos efêmeros" no artigo Conceitos básicos sobre a coleta de lixo.

disallowFullBlockingGC
Boolean

true para omitir uma coleta de lixo de bloqueio completo se o coletor de lixo inicialmente não puder alocar totalSize bytes; caso contrário, false.

Retornos

true se o runtime for capaz de confirmar a quantidade necessária de memória e o coletor de lixo for capaz de entrar no modo de latência não região GC; caso contrário, false.

Atributos

Exceções

totalSize excede o tamanho do segmento efêmero.

O processo já está em modo de latência não região GC.

Comentários

O TryStartNoGCRegion(Int64, Boolean) método tenta colocar o coletor de lixo no modo de latência de região GC, que não permite a coleta de lixo enquanto um aplicativo executa uma região crítica de código. Se o runtime não puder alocar inicialmente a quantidade de memória solicitada e o disallowFullBlockingGC argumento for false, o coletor de lixo executará uma coleta de lixo de bloqueio completo na tentativa de liberar memória adicional; caso contrário, a alocação falhará e o método retornará false. O coletor de lixo não entrará no modo de latência da região do GC se for capaz de alocar a quantidade necessária de memória, que nesse caso é, na verdade, 2 * totalSize (ele tenta alocar totalSize para o heap de objeto pequeno e totalSize para o heap de objeto grande).

totalSize deve ser grande o suficiente para lidar com todas as alocações de memória que ocorrem no caminho crítico. Isso inclui alocações pelo aplicativo, bem como alocações que o runtime faz em nome do aplicativo.

A configuração disallowFullBlockingGC para true evitar uma coleta de lixo de bloqueio completo se não houver memória suficiente inicialmente disponível é mais útil em cenários de balanceamento de carga: um sistema pode chamar esse método e relatar-se como pronto para aceitar solicitações se retornar truee fazer com que o balanceador de carga redirecione solicitações para outros sistemas se retornar false. Em seguida, ele pode fazer uma coleta de lixo de bloqueio completo quando não está tratando solicitações chamando o Collect(Int32, GCCollectionMode, Boolean, Boolean) método .

Importante

Você não pode aninhar chamadas para o TryStartNoGCRegion método e só deverá chamar o EndNoGCRegion método se o runtime estiver atualmente em nenhum modo de latência de região GC. Em outras palavras, você não deve chamar TryStartNoGCRegion várias vezes (após a primeira chamada de método, as chamadas subsequentes não serão bem-sucedidas) e você não deve esperar que as chamadas EndNoGCRegion tenham êxito apenas porque a primeira chamada foi TryStartNoGCRegion bem-sucedida.

Você sai do modo de latência de região sem GC chamando o EndNoGCRegion método .

Confira também

Aplica-se a

TryStartNoGCRegion(Int64)

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

Tentar desabilitar a coleta de lixo durante a execução de um caminho crítico se uma quantidade especificada de memória estiver disponível.

public:
 static bool TryStartNoGCRegion(long totalSize);
public static bool TryStartNoGCRegion (long totalSize);
[System.Security.SecurityCritical]
public static bool TryStartNoGCRegion (long totalSize);
static member TryStartNoGCRegion : int64 -> bool
[<System.Security.SecurityCritical>]
static member TryStartNoGCRegion : int64 -> bool
Public Shared Function TryStartNoGCRegion (totalSize As Long) As Boolean

Parâmetros

totalSize
Int64

A quantidade de memória em bytes a se alocar sem disparar uma coleta de lixo. Ela deve ser menor ou igual ao tamanho de um segmento efêmero. Para obter informações sobre o tamanho de um segmento efêmero, consulte a seção "Gerações e segmentos efêmeros" no artigo Conceitos básicos sobre a coleta de lixo.

Retornos

true se o runtime for capaz de confirmar a quantidade necessária de memória e o coletor de lixo for capaz de entrar no modo de latência não região GC; caso contrário, false.

Atributos

Exceções

totalSize excede o tamanho do segmento efêmero.

O processo já está em modo de latência não região GC.

Comentários

O TryStartNoGCRegion(Int64) método tenta colocar o coletor de lixo no modo de latência de região GC, que não permite a coleta de lixo enquanto um aplicativo executa uma região crítica de código. Se o runtime não puder alocar inicialmente a quantidade de memória solicitada, o coletor de lixo executará uma coleta de lixo de bloqueio completo na tentativa de liberar memória adicional. O coletor de lixo não entrará no modo de latência da região GC se for capaz de alocar a quantidade necessária de memória, que nesse caso é, na verdade, 2 * totalSize bytes (ele tenta alocar totalSize bytes para o heap de objeto pequeno e totalSize bytes para o heap de objeto grande).

totalSize deve ser grande o suficiente para lidar com todas as alocações de memória que ocorrem no caminho crítico. Isso inclui alocações pelo aplicativo, bem como alocações que o runtime faz em nome do aplicativo.

Importante

Você não pode aninhar chamadas para o TryStartNoGCRegion método e só deverá chamar o EndNoGCRegion método se o runtime estiver atualmente em nenhum modo de latência de região GC. Em outras palavras, você não deve chamar TryStartNoGCRegion várias vezes (após a primeira chamada de método, as chamadas subsequentes não serão bem-sucedidas) e você não deve esperar que as chamadas EndNoGCRegion tenham êxito apenas porque a primeira chamada foi TryStartNoGCRegion bem-sucedida.

Você sai do modo de latência de região sem GC chamando o EndNoGCRegion método .

Confira também

Aplica-se a