Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V případě uvolňování paměti na pozadí (GC) se podle potřeby shromažďují dočasné generace (0 a 1), zatímco probíhá shromažďování generace 2. Uvolňování paměti na pozadí se provádí na jednom nebo více vyhrazených vláknech v závislosti na tom, jestli se jedná o pracovní stanici nebo serverové GC, a vztahuje se pouze na kolekce generace 2.
Uvolňování paměti na pozadí je ve výchozím nastavení povolené. Dá se povolit nebo zakázat s nastavením konfigurace gcConcurrent v aplikacích .NET Framework nebo v nastavení System.GC.Concurrent v aplikacích .NET Core a .NET 5 a novějších aplikacích.
Poznámka:
Uvolňování paměti na pozadí nahrazuje souběžné uvolňování paměti a je k dispozici v rozhraní .NET Framework 4 a novějších verzích. V rozhraní .NET Framework 4 se podporuje pouze pro uvolňování paměti pracovní stanice . Počínaje rozhraním .NET Framework 4.5 je uvolňování paměti na pozadí dostupné pro pracovní stanici i pro uvolňování paměti serveru .
Kolekce v dočasných generacích během uvolňování paměti na pozadí se označuje jako uvolňování paměti popředí. Když dojde k garbage collection na popředí, pozastaví se všechna spravovaná vlákna.
Pokud probíhá úklid paměti na pozadí a přidělili jste dostatek objektů v generaci 0, CLR spustí proces uvolňování paměti pro generaci 0 nebo 1 v popředí. ** Vyhrazené vlákno uvolňování paměti na pozadí kontroluje v častých bezpečných bodech, aby zjistilo, zda existuje požadavek na uvolňování paměti v popředí. Pokud existuje, kolekce na pozadí se pozastaví, aby mohlo dojít k uvolňování paměti popředí. Po dokončení uvolňování paměti v popředí se obnoví vyhrazená vlákna pro uvolňování paměti na pozadí a vyhrazená uživatelská vlákna.
Uvolňování paměti na pozadí odstraňuje omezení použití, která jsou stanovena souběžným uvolňováním paměti, protože efemerní uvolňování paměti může probíhat během uvolňování paměti na pozadí. Správa paměti na pozadí může odebrat mrtvé objekty v efemérních generacích. Může také rozšířit haldu v případě potřeby během uvolňování paměti 1. generace.
Pracovní stanice GC vs. serverové GC
Počínaje rozhraním .NET Framework 4.5 je pro uvolňování paměti serveru k dispozici uvolňování paměti na pozadí. Uvolňování paměti na pozadí (GC) je výchozí režim pro uvolňování paměti na serveru.
Funkce uvolňování paměti serveru na pozadí podobně jako uvolňování paměti pracovní stanice na pozadí, ale existuje několik rozdílů:
Uvolňování paměti pracovní stanice na pozadí používá jedno vyhrazené vlákno uvolňování paměti na pozadí, zatímco uvolňování paměti serveru na pozadí používá více vláken. Obvykle existuje vyhrazené vlákno pro každý logický procesor.
Na rozdíl od pracovní stanice, vlákna serveru pro uvolňování paměti na pozadí nemají časový limit.
Následující obrázek ukazuje, jak probíhá proces pracovní stanice, který se na pozadí zaměřuje na shromažďování nevyužité paměti pomocí samostatného vyhrazeného vlákna:
Následující obrázek ukazuje správu paměti na pozadí serveru prováděnou na vyhrazených a samostatných vláknech:
Souběžná správa paměti
Návod
Tato část platí pro:
- .NET Framework verze 3.5 a starší pro správu paměti pracovní stanice
- .NET Framework 4 a starší pro uvolňování paměti serveru
Souběžné uvolňování paměti se nahradí uvolňováním paměti na pozadí v novějších verzích.
V uvolňování paměti pracovní stanice nebo serveru můžete povolit souběžné uvolňování paměti, které umožňuje vláknům běžet souběžně s vyhrazeným vláknem, jež provádí uvolňování paměti po většinu doby jeho trvání. Tato možnost ovlivňuje pouze uvolňování paměti v generaci 2; generace 0 a 1 jsou vždy nesouběžné, protože se dokončují rychle.
Souběžná správa paměti umožňuje interaktivním aplikacím být více pohotové tím, že minimalizuje prodlevy během procesu sběru. Spravovaná vlákna mohou většinu času běžet během běhu souběžného vlákna pro uvolňování paměti. Výsledkem tohoto návrhu jsou kratší pauzy během uvolňování paměti.
Souběžné uvolňování paměti se provádí ve vyhrazeném vlákně. CLR ve výchozím nastavení spouští garbage collection pro pracovní stanici se souběžným uvolňováním paměti povoleným jak na počítačích s jedním procesorem, tak na počítačích s více procesory.
Následující obrázek ukazuje souběžnou správu paměti prováděnou na samostatném vyhrazeném vlákně.