Číst v angličtině

Sdílet prostřednictvím


GC.GetTotalMemory(Boolean) Metoda

Definice

Načte velikost haldy bez fragmentace. Pokud je například celková velikost haldy uvolňování paměti 100 mb a fragmentace( tj. místo zabírají volné objekty) zabírá 40 MB, toto rozhraní API by hlásilo 60 mb. Parametr označuje, zda tato metoda může čekat krátký interval před vrácením, aby systém mohl shromažďovat uvolnění paměti a finalizovat objekty.

C#
public static long GetTotalMemory(bool forceFullCollection);

Parametry

forceFullCollection
Boolean

trueChcete-li označit, že tato metoda může čekat na uvolnění paměti před vrácením; v opačném případě . false

Návraty

Velikost haldy v bajtech s vyloučením fragmentace.

Příklady

Následující příklad ukazuje použití GetTotalMemory metody k získání a zobrazení počtu bajtů aktuálně přidělených ve spravované paměti.

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

Poznámky

forceFullCollection Pokud je trueparametr , tato metoda čeká krátký interval před vrácením, zatímco systém shromažďuje uvolnění paměti a finalizuje objekty. Doba trvání intervalu je interně určený limit určený počtem dokončených cyklů uvolňování paměti a změnou množství paměti obnovené mezi cykly. Systém uvolňování paměti nezaručuje, že je shromažďována veškerá nedostupná paměť.

Platí pro

Produkt Verze
.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, 10
.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