GC.GetTotalMemory(Boolean) Metodo

Definizione

Recupera le dimensioni dell'heap escluse la frammentazione. Ad esempio, se la dimensione totale dell'heap GC è pari a 100 mb e frammentazione, ad esempio, lo spazio occupato da oggetti gratuiti, richiede 40 mb, questa API segnala 60 mb. Un parametro indica se questo metodo può attendere un breve intervallo prima di restituire un risultato per consentire l'esecuzione della procedura di Garbage Collection e la finalizzazione degli oggetti.

public static long GetTotalMemory (bool forceFullCollection);

Parametri

forceFullCollection
Boolean

true per indicare che questo metodo può attendere l'esecuzione dell'operazione di Garbage Collection prima di restituire un risultato; in caso contrario, false.

Restituisce

Dimensioni dell'heap, in byte, escluse la frammentazione.

Esempio

Nell'esempio seguente viene illustrato come usare il metodo per ottenere e visualizzare il GetTotalMemory numero di byte attualmente allocati in memoria gestita.

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();
            }
        }
    }
}

Commenti

Se il parametro è true, questo metodo attende un breve intervallo prima di restituire mentre il forceFullCollection sistema raccoglie i garbage e finalizza gli oggetti. La durata dell'intervallo è un limite specificato internamente determinato dal numero di cicli di Garbage Collection completati e la modifica nella quantità di memoria recuperata tra i cicli. Garbage Collector non garantisce che venga raccolta tutta la memoria inaccessibile.

Si applica a

Prodotto Versioni
.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