GCSettings.LargeObjectHeapCompactionMode Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um valor que indica se a coleta de lixo com bloqueio completo compacta o heap de objeto grande (LOH).
public:
static property System::Runtime::GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { System::Runtime::GCLargeObjectHeapCompactionMode get(); void set(System::Runtime::GCLargeObjectHeapCompactionMode value); };
public static System.Runtime.GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { get; [System.Security.SecurityCritical] set; }
public static System.Runtime.GCLargeObjectHeapCompactionMode LargeObjectHeapCompactionMode { get; set; }
[<set: System.Security.SecurityCritical>]
static member LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
static member LargeObjectHeapCompactionMode : System.Runtime.GCLargeObjectHeapCompactionMode with get, set
Public Shared Property LargeObjectHeapCompactionMode As GCLargeObjectHeapCompactionMode
Valor da propriedade
Um dos valores de enumeração que indica se uma coleta de lixo de bloqueio completo compacta o LOH.
- Atributos
Comentários
O LOH é usado para alocar memória para objetos grandes (como matrizes) que exigem mais de 85.000 bytes. Devido ao impacto no desempenho da cópia de grandes blocos de memória, o coletor de lixo normalmente varre o LOH, o que envolve a criação de uma lista dos locais de memória que foram ocupados por objetos mortos e que podem ser reutilizados para atender a solicitações futuras de alocação de memória para objetos grandes. No entanto, em aplicativos que fazem uso extensivo do LOH para armazenar objetos transitórios, a fragmentação de memória também pode afetar negativamente o desempenho. Nesse caso, é possível usar a LargeObjectHeapCompactionMode propriedade para compactar em vez de simplesmente varrer o LOH durante uma coleta de lixo.
O valor padrão da LargeObjectHeapCompactionMode propriedade é GCLargeObjectHeapCompactionMode.Default, que indica que o LOH não é compactado durante coletas de lixo. Se você atribuir à propriedade um valor de GCLargeObjectHeapCompactionMode.CompactOnce, o LOH será compactado durante a próxima coleta de lixo de bloqueio completo e o valor da propriedade será redefinido para GCLargeObjectHeapCompactionMode.Default.
Observação
As coletas de lixo em segundo plano não estão bloqueando. Isso significa que, se você definir a LargeObjectHeapCompactionMode propriedade como GCLargeObjectHeapCompactionMode.CompactOnce, quaisquer coleções de geração 2 em segundo plano que ocorram posteriormente não compactarão o LOH. Somente a primeira coleção de bloqueio da geração 2 compacta o LOH.
Depois que a LargeObjectHeapCompactionMode propriedade é definida como GCLargeObjectHeapCompactionMode.CompactOnce, a próxima coleta de lixo de bloqueio completo (e a compactação do LOH) ocorre em um momento futuro indeterminado. Você pode compactar o LOH imediatamente usando código como o seguinte:
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
GC.Collect();
GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce
GC.Collect()