Byla tato stránka užitečná?
Váš názor na tento obsah je důležitý. Sdělte nám, co si myslíte.
Další podněty?
Zbývající počet znaků: 1500
Exportovat (0) Tisk
Rozbalit vše
Tento článek byl přeložen strojově počítačem. Původní text zobrazíte přesunutím ukazatele myši nad jednotlivé věty článku. Další informace
Překlad
Originál

GC – třída

Řídí systém uvolňování paměti, služba, která automaticky získá nevyužité paměti.

Obor názvů:  System
Sestavení:  mscorlib (v mscorlib.dll)

public static class GC

Typ GC zveřejňuje následující členy.

  NázevPopis
Veřejná vlastnostStatický členPodporováno rozhraním XNA FrameworkPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreMaxGenerationZíská maximální počet generací, které systém aktuálně podporuje.
Nahoru

  NázevPopis
Veřejná metodaStatický členPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreAddMemoryPressureInformuje runtime velké přidělení nespravované paměti, která je třeba vzít v úvahu při plánování uvolněné.
Veřejná metodaStatický členCancelFullGCNotificationZruší registraci oznámení sběr odpadků.
Veřejná metodaStatický členPodporováno rozhraním XNA FrameworkPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreCollect()Vynutí okamžité uvolňování všech generací.
Veřejná metodaStatický členPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreCollect(Int32)Vynutí okamžité uvolňování z prostřednictvím určeného generace generace 0.
Veřejná metodaStatický členPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreCollect(Int32, GCCollectionMode)Vynutí uvolnění paměti v generaci 0 prostřednictvím určeného generace, v době určené GCCollectionMode hodnotu.
Veřejná metodaStatický členPodporováno v: .NET pro aplikace pro Windows StoreCollect(Int32, GCCollectionMode, Boolean)Vynutí uvolnění paměti v generaci 0 prostřednictvím určeného generace, v době určené GCCollectionMode hodnotu, hodnota, která určuje, zda má kolekce blokuje.
Veřejná metodaStatický členPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreCollectionCountVrátí počet případů, kdy došlo k uvolnění paměti pro generování zadaný objektů.
Veřejná metodaStatický členGetGeneration(Object)Vrátí číslo aktuální generování zadaný objekt.
Veřejná metodaStatický členGetGeneration(WeakReference)Vrátí aktuální generace cíl určený Slabý odkaz.
Veřejná metodaStatický členPodporováno rozhraním XNA FrameworkPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreGetTotalMemoryZíská počet bajtů aktuálně přidělená představit. Parametr označuje, zda tato metoda počkat krátký interval před návratem systém pro sběr odpadků a finalizovat objekty.
Veřejná metodaStatický členPodporováno rozhraním XNA FrameworkPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreKeepAliveOdkazuje na zadaný objekt je způsobilé pro uvolňování od začátku aktuálního rutinní až k bodu, kde je tato metoda volána.
Veřejná metodaStatický členRegisterForFullGCNotificationUrčuje, že oznámení sběr odpadků by měla být zvýšena při podmínek upřednostnit úplné uvolnění paměti a kdy byla dokončena kolekce.
Veřejná metodaStatický členPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreRemoveMemoryPressureInformuje runtime uvolněné nespravované paměti a již je třeba vzít v úvahu při plánování uvolněné.
Veřejná metodaStatický členPodporováno rozhraním XNA FrameworkPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreReRegisterForFinalizePožaduje, aby systém volání je finalizační metoda pro zadaný objekt pro který SuppressFinalize již byla volána.
Veřejná metodaStatický členPodporováno rozhraním XNA FrameworkPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreSuppressFinalizePožadavky, že společný jazykový modul runtime nelze volat je finalizační metoda pro zadaný objekt.
Veřejná metodaStatický členWaitForFullGCApproach()Vrátí stav registrovaných oznámení pro určení, zda je bezprostřední úplné, blokuje uvolňování podle společného jazykového modulu runtime.
Veřejná metodaStatický členWaitForFullGCApproach(Int32)Vrátí, v zadaném časovém limitu, stav registrovaných oznámení pro určení, zda je bezprostřední úplné, blokuje uvolňování podle společného jazykového modulu runtime.
Veřejná metodaStatický členWaitForFullGCComplete()Vrátí stav registrovaných oznámení pro určení, zda byla dokončena úplná, blokuje uvolňování podle společného jazykového modulu runtime.
Veřejná metodaStatický členWaitForFullGCComplete(Int32)Vrátí, v zadaném časovém limitu, stav registrovaných oznámení pro určení, zda úplné, uvolňování blokování společný jazyk runtime byla dokončena.
Veřejná metodaStatický členPodporováno rozhraním XNA FrameworkPodporováno rozhraním Knihovny přenosných třídPodporováno v: .NET pro aplikace pro Windows StoreWaitForPendingFinalizersAktuální podproces pozastaví, dokud podproces, který zpracovává fronty finalizačních metod vyprázdnil fronty.
Nahoru

Metody v této třídě ovlivnit při provádění úklidu objektu a objektem přidělené prostředky jsou uvolněny. Vlastnosti této třídy obsahují informace o celkové množství dostupné paměti v systému a věkové kategorie nebo generování paměti přidělené objektu.

Uvolňování sleduje a uvolňuje volné objekty přidělené v spravované paměti. Uvolňování paměti provádí pravidelně úklidu uvolnit paměť přidělenou objekty, pro které neexistují žádné platné odkazy. Úklid probíhá automaticky při požadavku na paměti nelze uspokojit pomocí volné místo na disku. Aplikace také lze vynutit pomocí kolekce uvolnění paměti Collect metody.

Uvolnění paměti se skládá z následujících kroků:

  1. Uvolňování hledá spravovaných objektů, které jsou odkazovány ve spravovaném kódu.

  2. Uvolňování pokusí finalizovat objekty, které nejsou uvedeny.

  3. Uvolňování uvolní objekty, které nejsou uvedeny a získá jejich paměti.

Během sběru nebude uvolňování volného objektu, pokud najde jeden nebo více odkazů na objekt ve spravovaném kódu. Uvolňování však nerozpozná z nespravovaného kódu odkazy na objekt a může uvolnit objekty, které jsou používány výhradně v nespravovaném kódu, není-li explicitně zabráněno. KeepAlive Metoda poskytuje mechanismus, který zabraňuje uvolňování shromažďování objektů, které je stále používán v nespravovaný kód.

Kromě přidělení spravované paměti implementace systému uvolňování paměti spravovat informace o zdrojích, které jsou v držení objektu, například popisovače souborů nebo připojení k databázi. Pokud typ používá nespravované prostředky, které musí být uvolněny dříve, než jsou regenerované instance typu, typu implementovat finalizační metody.

Ve většině případů jsou implementovány finalizační metoda přepsáním Object.Finalize metoda; však typy napsané v jazyce C# nebo C++ implementovat destruktory, kompilátory, které se změní na přepsání Object.Finalize. Ve většině případů Pokud má objekt finalizační metody, uvolňování volání před uvolněním objektu. Uvolňování však není třeba volat finalizačních metod ve všech situacích; například SuppressFinalize metody explicitně zabrání finalizační metody volány. Také uvolňování nevyžaduje použití zvláštní podproces finalizovat objekty nebo zaručit pořadí, ve kterém se nazývají finalizačních metod pro objekty, které odkazují na sebe, ale jinak jsou k dispozici pro úklid.

V případech, kdy musí být uvolněny prostředky na určitou dobu, můžete implementovat třídy IDisposable rozhraní, které obsahuje IDisposable.Dispose metodu, která provádí úkoly správy a vyčištění zdroje. Třídy, které implementují Dispose musí být uvedeny jako součást zakázky své třídy, pokud spotřebitelé třídy voláním metody vyčištění objektu. Uvolňování, standardně nevolá Dispose metoda; však implementace Dispose metoda lze volat metody ve GC třídy pro přizpůsobení chování dokončení systému uvolňování paměti.

Je doporučeno, ale není vyžadováno, aby podporoval sběrače odpadků objekt stárnutí pomocí generací. Generace je jednotka měření relativní stáří objektů v paměti. Číslo generování nebo stáří objektu označuje generace, do které objekt patří. Objekty vytvořené další nedávno jsou součástí novějších generací a mají nižší generace čísla než objekty vytvořené dříve v životě aplikace cyklu. Objekty v poslední generaci jsou v generaci 0.

Poznámky pro implementátory

Tato implementace systému uvolňování paměti podporuje tři generace objektů.

MaxGeneration slouží k určení počtu generování maximální podporovanou systémem. Objekt stárnutí umožňuje aplikacím cílové uvolněné na specifickou sadu generací místo uvolňování k vyhodnocení všech generací.

Následující příklad používá několik metod GC získat paměti informace o blokování nepoužívaných objektů a generování a tisk do konzoly. Nepoužívané objekty jsou pak shromážděny a zobrazí výsledné celkové částky paměti.


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


.NET Framework

Podporováno v: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Podporováno v: 4, 3.5 SP1

Knihovny přenosných tříd

Podporováno v: Knihovny přenosných tříd

.NET pro aplikace pro Windows Store

Podporováno v: Windows 8

.NET pro aplikace pro Windows Phone

Podporováno v: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (role Server Core není podporována), Windows Server 2008 R2 (role Server Core je podporována s aktualizací SP1 nebo novější, architektura Itanium není podporována)

.NET Framework nepodporuje některé verze platforem. Seznam podporovaných verzí naleznete v tématu .NET – požadavky na systém.

Všechny veřejné členy static (Shared v jazyce Visual Basic) tohoto typu jsou bezpečné pro přístup z více vláken. Není zaručeno, že členy instancí jsou bezpečné pro přístup z více vláken.

Referenční dokumentace

Obsah vytvořený komunitou

Přidat
Zobrazit:
© 2015 Microsoft