Ler em inglês

Partilhar via


GC.MaxGeneration Propriedade

Definição

Obtém o número máximo de gerações que o sistema dá suporte atualmente.

public static int MaxGeneration { get; }

Valor da propriedade

Um valor que varia de zero ao número máximo de gerações com suporte.

Exemplos

O exemplo a seguir demonstra como usar a MaxGeneration propriedade para exibir o maior número de geração atualmente em uso.

using System;

namespace GCCollectIntExample
{
    class MyGCCollectClass
    {
        private const long maxGarbage = 1000;

        static void Main()
        {
            MyGCCollectClass myGCCol = new MyGCCollectClass();

            // Determine the maximum number of generations the system
        // garbage collector currently supports.
            Console.WriteLine("The highest generation is {0}", GC.MaxGeneration);

            myGCCol.MakeSomeGarbage();

            // Determine which generation myGCCol object is stored in.
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));

            // Determine the best available approximation of the number
        // of bytes currently allocated in managed memory.
            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));

            // Perform a collection of generation 0 only.
            GC.Collect(0);

            // Determine which generation myGCCol object is stored in.
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));

            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));

            // Perform a collection of all generations up to and including 2.
            GC.Collect(2);

            // Determine which generation myGCCol object is stored in.
            Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol));
            Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false));
            Console.Read();
        }

        void MakeSomeGarbage()
        {
            Version vt;

            for(int i = 0; i < maxGarbage; i++)
            {
                // Create objects and release them to fill up memory
        // with unused objects.
                vt = new Version();
            }
        }
    }
}

Comentários

O número de geração, ou idade, de um objeto é uma medida relativa definida pela implementação do tempo de vida de um objeto. Os objetos criados mais recentemente estão na geração 0 e os objetos mais antigos estão em uma geração menor ou igual à geração retornada pela MaxGeneration propriedade .

O coletor de lixo pressupõe que a memória mais recente é mais provável de ser qualificada para coleta de lixo do que a memória mais antiga. Portanto, o coletor de lixo melhora seu desempenho ajustando os números de geração sempre que recupera memória e o valor da MaxGeneration propriedade pode crescer ao longo do tempo.

Se o envelhecimento do objeto for implementado, a MaxGeneration propriedade retornará o número máximo de geração usado pelo sistema; caso contrário, essa propriedade retornará zero.

Para essa implementação, o valor retornado pela MaxGeneration propriedade tem a garantia de permanecer constante durante o tempo de vida de um aplicativo em execução.

Use a MaxGeneration propriedade para determinar o valor máximo que você pode especificar ao chamar o Collect(Int32) método que usa um parâmetro de geração.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Confira também