Tento článek byl přeložený strojově. Pokud chcete zobrazit článek v angličtině, zaškrtněte políčko Angličtina. Anglickou verzi článku můžete také zobrazit v místním okně přesunutím ukazatele myši nad text.
Překlad
Angličtina

Třída GC

.NET Framework (current version)
 

Ovládací prvky systému uvolňování, služba, která automaticky získá nevyužitou paměť.

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


public static class GC

NázevPopis
System_CAPS_pubpropertySystem_CAPS_staticMaxGeneration

Získá maximální počet generací aktuálně podporovaných v systému.

NázevPopis
System_CAPS_pubmethodSystem_CAPS_staticAddMemoryPressure(Int64)

Informuje o runtime velké přidělení nespravované paměti, která je vzít v úvahu při plánování uvolňování paměti.

System_CAPS_pubmethodSystem_CAPS_staticCancelFullGCNotification()

Zruší registraci oznámení uvolnění paměti.

System_CAPS_pubmethodSystem_CAPS_staticCollect()

Vynutí okamžitou uvolňování všech generací.

System_CAPS_pubmethodSystem_CAPS_staticCollect(Int32)

Vynutí okamžitou uvolňování z generace 0 prostřednictvím zadané generace.

System_CAPS_pubmethodSystem_CAPS_staticCollect(Int32, GCCollectionMode)

Vynutí uvolňování z generace 0 prostřednictvím zadané generace v době určené GCCollectionMode hodnotu.

System_CAPS_pubmethodSystem_CAPS_staticCollect(Int32, GCCollectionMode, Boolean)

Vynutí uvolňování z generace 0 pomocí zadané generace v době určené GCCollectionMode hodnotu s hodnotu určující, zda by měl být blokování kolekce.

System_CAPS_pubmethodSystem_CAPS_staticCollect(Int32, GCCollectionMode, Boolean, Boolean)

Vynutí uvolňování z generace 0 prostřednictvím zadané generace v době určené GCCollectionMode hodnotu s hodnotami, které určují, zda kolekce blokování a kompresi.

System_CAPS_pubmethodSystem_CAPS_staticCollectionCount(Int32)

Vrátí počet pokusů, které pro zadané generace objektů došlo k uvolnění paměti.

System_CAPS_pubmethodSystem_CAPS_staticEndNoGCRegion()

Končí žádný režim latence GC oblast.

System_CAPS_pubmethodSystem_CAPS_staticGetGeneration(Object)

Vrátí číslo aktuální generování zadaného objektu.

System_CAPS_pubmethodSystem_CAPS_staticGetGeneration(WeakReference)

Vrátí číslo aktuální generování cíle zadané Slabý odkaz.

System_CAPS_pubmethodSystem_CAPS_staticGetTotalMemory(Boolean)

Načte počet bajtů, které jsou aktuálně chápat mají být přiděleny. Parametr označuje, zda tato metoda může čekat, než krátký interval před vrácením povolit systému pro shromažďování uvolňování paměti a dokončení objekty.

System_CAPS_pubmethodSystem_CAPS_staticKeepAlive(Object)

Odkazuje na zadaný objekt, díky čemuž způsobilé pro uvolňování paměti od začátku aktuální rutinu do bodu, kde tato metoda je volána.

System_CAPS_pubmethodSystem_CAPS_staticRegisterForFullGCNotification(Int32, Int32)

Určuje, že oznámení uvolnění paměti by měl být vyvolané podmínky upřednostnit úplné uvolňování paměti a kdy se dokončila kolekce.

System_CAPS_pubmethodSystem_CAPS_staticRemoveMemoryPressure(Int64)

Informuje o modulu runtime, aby byla vydána nespravované paměti a již nepotřebuje vzít v úvahu při plánování uvolňování paměti.

System_CAPS_pubmethodSystem_CAPS_staticReRegisterForFinalize(Object)

Požadavky, že systému volat finalizační metoda pro zadaný objekt, pro který SuppressFinalize dříve byla volána.

System_CAPS_pubmethodSystem_CAPS_staticSuppressFinalize(Object)

Požadavky, že modul common language runtime nevolá finalizační metoda pro zadaný objekt.

System_CAPS_pubmethodSystem_CAPS_staticTryStartNoGCRegion(Int64)

Pokusí se zakáže uvolňování paměti během provádění kritické cesty, pokud zadaná velikost paměti je k dispozici.

System_CAPS_pubmethodSystem_CAPS_staticTryStartNoGCRegion(Int64, Boolean)

Pokusí se zakáže uvolňování paměti během provádění kritické cesty, pokud zadaná velikost paměti je k dispozici, a zda má systém uvolňování nemá úplné uvolňování blokování, pokud není dost paměti je k dispozici zatím ovládacích prvků.

System_CAPS_pubmethodSystem_CAPS_staticTryStartNoGCRegion(Int64, Int64)

Pokusy o zakáže uvolňování paměti během provádění kritické cesty, pokud zadaná velikost paměti je k dispozici pro haldě velkého objektu a halda malé objektu.

System_CAPS_pubmethodSystem_CAPS_staticTryStartNoGCRegion(Int64, Int64, Boolean)

Pokusí se zakáže uvolňování paměti během provádění kritické cesty zadanou velikost paměti je k dispozici pro haldě velkého objektu a malé objekty a zda bude systém uvolňování nemá úplné uvolňování blokování, pokud není dost paměti je k dispozici zatím ovládací prvky.

System_CAPS_pubmethodSystem_CAPS_staticWaitForFullGCApproach()

Vrátí stav registrované oznámení pro určení, zda je bezprostředního úplné blokování uvolňování paměti modulem common language runtime.

System_CAPS_pubmethodSystem_CAPS_staticWaitForFullGCApproach(Int32)

Vrátí hodnotu v zadaném časovém limitu, stav registrované oznámení pro určení, zda je bezprostředního úplné blokování uvolňování paměti modulem common language runtime.

System_CAPS_pubmethodSystem_CAPS_staticWaitForFullGCComplete()

Vrátí stav registrované oznámení pro určení, zda byla dokončena úplná, blokování uvolňování paměti modulem common language runtime.

System_CAPS_pubmethodSystem_CAPS_staticWaitForFullGCComplete(Int32)

Vrátí hodnotu v zadaném časovém limitu, stav registrované oznámení pro určení, zda úplná, blokování uvolňování common language runtime byla dokončena.

System_CAPS_pubmethodSystem_CAPS_staticWaitForPendingFinalizers()

Pozastaví aktuální vlákno, dokud vlákna, která zpracovává fronta finalizační metody má vyprázdnit této fronty.

Uvolňování paměti je běžné komponenty modulu runtime jazyka, která řídí přidělení a verzi spravovaných paměti. Metody v této třídě ovlivnit při uvolňování objektu a při uvolnění prostředků přidělené objektem. Vlastnosti v této třídě poskytují informace o celkovém množství dostupné paměti v systému a stáří kategorie nebo generování paměť přidělená pro objekt.

Uvolňování paměti sleduje a získá objekty přidělené ve spravované paměti. Uvolňování paměti pravidelně provádí uvolňování paměti pro uvolnit paměť přidělená pro objekty, pro které se žádné platné odkazy. Uvolňování paměti se stane automaticky, když požadavek paměti nelze uspokojit, pomocí volné místo na disku. Aplikace také můžete vynutit pomocí kolekce paměti Collect Metoda.

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

  1. Uvolňování paměti hledá spravovaných objektů, které jsou odkazované ve spravovaném kódu.

  2. Uvolňování paměti se pokusí dokončit objekty, které nejsou odkazovány.

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

Toto téma obsahuje následující části:

Systém uvolňování paměti a nespravovaných prostředků
Objekt stárnutí a generací
Zakazuje se uvolňování paměti

Během kolekce nebude uvolňování volného objektu, pokud najde jeden nebo více odkazů na objekt ve spravovaném kódu. Uvolňování paměti však nemůže rozpoznat odkazy na objekt z nespravovaného kódu a může volné objekty, které jsou používány výhradně v nespravovaném kódu, pokud není výslovně zabráněno v. KeepAlive Metoda poskytuje mechanismus, který brání uvolňování shromažďování objekty, které jsou stále používáno v nespravovaném kódu.

Kromě zajištění dostatečného spravované paměti přidělené implementace systému uvolňování neudržují informace o prostředky držené objekt, jako jsou popisovače souborů nebo připojení k databázi. Používá-li typ nespravované prostředky, které musí být vydány předtím, než se uvolní instance typu, můžete implementovat typ finalizační metody.

Ve většině případů finalizační metody implementované přepsání Object.Finalize Metoda; však typy, které jsou napsané v C# nebo C++ implementovat destruktory, které kompilátory zapnout do přepsání Object.Finalize. Ve většině případů Pokud objekt má finalizační metodu, bude systém uvolňování volá se před uvolnění objektu. Uvolňování paměti však není nutné volat finalizační metody ve všech situacích; například SuppressFinalize Metoda explicitně brání finalizační metodu objektu volána. Uvolňování paměti navíc není potřeba použít konkrétní vlákno k dokončení objekty nebo zaručit pořadí, ve kterém jsou volány finalizační metody pro objekty, které vzájemně odkazovat, ale jinak jsou k dispozici pro uvolňování paměti.

Ve scénářích, kde musí uvolnit prostředky v konkrétním čase, můžete implementovat třídy IDisposable rozhraní, který obsahuje IDisposable.Dispose Metoda, která provádí úlohy správy a vyčištění prostředků. Třídy implementující Dispose musíte zadat, v rámci jejich třída kontraktu, pokud třída příjemci voláním metody vyčištění objektu. Uvolňování paměti, ve výchozím nastavení, nevyvolá Dispose Metoda, nicméně implementace Dispose metodu můžete volat metody GC Třída k přizpůsobení chování finalizace garbage collector v.

Další informace o objektu finalizace a uvolnění vzor, najdete v části Vymazání nespravovaných prostředků.

Uvolňování paměti v modulu common language runtime podporuje objekt stárnutí pomocí generace. Generace je jednotka měření relativní stáří objektů v paměti. Číslo generování nebo stáří objektu označuje generace, ke kterému patří objekt. Objekty vytvořené další nedávno jsou součástí novější generace a mají nižší generace čísla než objekty vytvořené dříve v aplikaci životní cyklus. Objekty v nejnovější generace jsou v 0. generace. Tato implementace systému uvolňování podporuje tři generace sady objektů, generace 0, 1, 2. Můžete načíst hodnotu MaxGeneration Vlastnosti k určení počtu generování maximální podporovaná systémem.

Objekt stárnutí umožňuje aplikacím cílové kolekce paměti na konkrétní sadu generace místo nutnosti uvolňování vyhodnotit všechny generace. Přetížení Collect Metoda, která patří generation parametr umožňují určit nejstarší generaci k uvolnění z paměti.

Od verze .NET Framework 4.6, bude systém uvolňování podporuje žádné GC oblast latence režim, který se dá použít během provádění kritické cesty, které paměti kolekce můžete nepříznivě ovlivnit výkon aplikace. Žádné GC oblast latence režim je potřeba zadat množství paměti, kterou lze přidělit bez narušení z uvolňování paměti. Pokud tuto paměť můžete přidělit modul runtime, modul runtime nebude provádět uvolnění paměti průběhu je provádění kódu v kritické cesty.

Můžete definovat na začátek kritické cestu oblasti žádné GC pomocí jednoho z přetížení volání TryStartNoGCRegion. Zadejte na konec kritické cesty voláním EndNoGCRegion Metoda.

Nelze vnořit volání TryStartNoGCRegion Metoda a by měly volat pouze EndNoGCRegion Metoda, pokud modul runtime je aktuálně v režimu latence oblast žádné GC. Jinými slovy, by neměl volání TryStartNoGCRegion několikrát (po prvním volání metoda nebude následující volání úspěšné), a není pravděpodobné, že volání EndNoGCRegion úspěšné právě, protože první volání TryStartNoGCRegion bylo úspěšné.

Následující příklad používá několik metod GC získat generování a paměti informace o blokování nepoužívaných objektů a tisk do konzoly. Nepoužívané objekty jsou potom jsou shromažďovány a zobrazují výsledný součty 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();
            }
        }
    }
}

Univerzální platforma Windows
K dispozici od 8
.NET Framework
K dispozici od 1.1
Přenosná knihovna tříd
Podporováno v: přenosné platformy .NET
Silverlight
K dispozici od 2.0
Windows Phone Silverlight
K dispozici od 7.0
Windows Phone
K dispozici od 8.1

Všechny veřejné statické členy ( Sdílené v jazyce Visual Basic) tohoto typu mají bezpečný přístup z více vláken. U členů instancí není bezpečný přístup z více vláken zaručen.

Zpět na začátek
Zobrazit: