ZaΦφnßme s jazykem C#

Jazyk C# se p°edstavuje (2. dφl)

╚asovß nßroΦnost (min):

ZaΦßteΦnφk

PokroΦil²

Profesionßl

Pou₧it² operaΦnφ systΘm : Hlavnφ v²vojov² nßstroj :

DalÜφ v²vojov² software :

Jin² software :

Windows 2000 SP3

Visual C# .NET 2002

Äßdn²

Äßdn²

 

 

Vß₧enφ Φtenß°i,

 

po minulΘ ·vodnφ Φßsti do sv∞ta jazyka C# a platformy .NET Framework ji₧ poznßte zßklady, na nich₧ je veÜkerß funkcionalita vize .NET polo₧ena. V dneÜnφm dφle si p°iblφ₧φme zp∙sob prßce automatickΘ sprßvy pam∞ti, kterou vykonßvß Garbage Collection.

 

Obsah

áGarbage Collection na prvnφ pohled

áGarbage Collection pod drobnohledem

áGenerace 0 a Garbage Collection

áGenerace 1 a Garbage Collection

áGenerace 2 a Garbage Collection

áV²znam Garbage Collection pro programßtory

 

 

Garbage Collection na prvnφ pohled

 

Garbage Collection (dßle tΘ₧ jako GC) je nφzko·rov≥ovß softwarovß slu₧ba, kterß zabezpeΦuje automatickou sprßvu pam∞ti. Hned na zaΦßtku si ovÜem musφme °φci, ₧e Garbage Collection nehospoda°φ s celou pam∞tφ poΦφtaΦe, ale jenom s jednou vyhrazenou oblastφ, kterß je oznaΦovßna jako °φzenß hromada (managed heap). ╪φzenou hromadu jsme si charakterizovali ji₧ v minulΘ Φßsti serißlu, jenom jsme ji jeÜt∞ neobda°ili p°φdomkem ä°φzenßô. ╪φzenß hromada slou₧φ jako globßlnφ ·lo₧iÜt∞ objekt∙, neboli instancφ °φzen²ch t°φd. Kdy₧ programßtor vytvo°φ instanci libovolnΘ t°φdy z bßzovΘ knihovny t°φdy .NET Frameworku (.NET Framework Class Library), tato instance je ulo₧ena na °φzenΘ hromad∞. Instance t°φd, neboli objekty, kterΘ jsou automaticky umφs¥ovanΘ do °φzenΘ hromady, jsou Φasto oznaΦovanΘ jako °φzenΘ instance, nebo takΘ °φzenΘ objekty. Na ka₧dou °φzenou instanci sm∞ruje v₧dy p°inejmenÜφm jeden odkaz, jen₧ je ulo₧en v inicializaΦnφ referenΦnφ prom∞nnΘ, kterß byla pou₧ita p°i vytvß°enφ instance. Krom∞ tohoto odkazu vÜak m∙₧ou na instanci odkazovat takΘ dalÜφ referenΦnφ prom∞nnΘ. Automatickß sprßva pam∞ti pomocφ Garbage Collection je zalo₧ena na vytvß°enφ a kontrole tzv. stromu odkaz∙. Strom odkaz∙ p°edstavuje stromovou strukturu vÜech odkaz∙ (vΦetn∞ vno°en²ch), kterΘ jsou nasm∞rovanΘ na jeden objekt °φzenΘ hromady. Jeliko₧ GC vytvß°φ strom odkaz∙ pro ka₧d² objekt, v ka₧dΘm okam₧iku vφ p°esn∞ urΦit, kolik ukazatel∙, resp. odkaz∙ referenΦnφch prom∞nn²ch je spojeno s konkrΘtnφm objektem. Abyste tuto situaci lΘpe pochopili, pomozme si grafickou ukßzkou.

 

P°edpoklßdejme, ₧e na °φzenΘ hromad∞ se nachßzejφ dva objekty, p°iΦem₧ v zßsobnφku jsou ulo₧eny Φty°i referenΦnφ prom∞nnΘ. Dv∞ z t∞chto referenΦnφch prom∞nn²ch obsahujφ odkazy na jeden z objekt∙ a zb²vajφcφ dv∞ prom∞nnΘ jsou zase nasm∞rovßny na druh² z objekt∙. Grafickou podobu nastφn∞nΘ situace m∙₧ete vid∞t na obr. 1.

 

 

Obr. 1 û Vztah referenΦnφch prom∞nn²ch a objekt∙ ulo₧en²ch na °φzenΘ hromad∞

 

Jak si m∙₧ete vÜimnout, referenΦnφ prom∞nnΘ Φ. 1 a 3 obsahujφ odkazy na Objekt 1, zatφmco referenΦnφ prom∞nnΘ Φ. 2 a 4 ukazujφ na Objekt 2. Toto je zcela b∞₧nß situace, v rßmci kterΘ m∙₧e s jednφm objektem pracovat v∞tÜφ poΦet odkazov²ch prom∞nn²ch. Garbage Collection mß pod kontrolou cel² ₧ivotnφ cyklus objekt∙, a proto vφ, ₧e na ka₧d² nßmi vytvo°en² objekt na °φzenΘ hromad∞ odkazujφ dv∞ referenΦnφ prom∞nnΘ. Strom odkaz∙ je v tomto p°φpad∞ jednoduch², ovÜem s vzr∙stajφcφm poΦtem referenΦnφch prom∞nn²ch (kterΘ odkazujφ na p°φsluÜn² objekt), se m∙₧e bohat∞ rozr∙stat a znaΦn∞ komplikovat. NaÜt∞stφ, algoritmus prßce Garbage Collection je spolehliv² a dovede si poradit takΘ s n∞kter²mi nßroΦn∞jÜφmi prvky, mezi kterΘ m∙₧eme za°adit nap°φklad vytvß°enφ vno°en²ch odkaz∙ na vnit°nφ objekty.

 

PokraΦujme ovÜem v naÜem iluzornφm p°φkladu a prostudujme, co by stalo, kdyby zanikli dv∞ referenΦnφ prom∞nnΘ (Φ. 3 a 4). Grafickou ukßzku zprost°edkovßvß obr. 2.

 

 

Obr. 2 û Likvidace dvou referenΦnφch prom∞nn²ch

 

Odkazovß prom∞nnß zanikne v₧dy, kdy₧ se dostane mimo sv∙j obor platnosti. Je-li nap°φklad oborem referenΦnφ prom∞nnΘ funkce, bude prom∞nnß zlikvidovßna v₧dy, kdy₧ bude proveden programov² k≤d funkce a funkce vrßtφ °φzenφ volajφcφ procedu°e. Kdy₧ dojde k tΘto situaci, nastane likvidace referenΦnφ prom∞nnΘ û prom∞nnß bude jednoduÜe odstran∞na ze zßsobnφku a jejφ hodnota bude zlikvidovßna. Proto₧e hodnotou referenΦnφ prom∞nnΘ je odkaz, neboli ukazatel, bude podroben destrukci prßv∞ tento. To znamenß, ₧e od tΘto chvφle bude na ka₧d² objekt ukazovat jenom jedna referenΦnφ prom∞nnß (na Objekt 1 prom∞nnß Φ. 1 a na Objekt 2 prom∞nnß Φ. 2). Tuto zm∞nu samoz°ejm∞ zaregistruje takΘ Garbage Collection, kterß vhodn²m zp∙sobem upravφ strom odkaz∙ tak, aby odrß₧el reßlnou situaci. GC tak zjistφ, ₧e oba objekty jsou stßle vyu₧φvanΘ, proto₧e na n∞ po°ßd sm∞rujφ jistΘ referenΦnφ prom∞nnΘ. Co se ovÜem stane, kdy₧ dojde k likvidaci i t∞chto zb²vajφcφch odkazov²ch prom∞nn²ch? Garbage Collection op∞t upravφ strom odkaz∙, nicmΘn∞ v tomto p°φpad∞ zjistφ, ₧e ani na jeden z objekt∙ neodkazujφ ₧ßdnΘ referenΦnφ prom∞nnΘ. Kdy₧ na objekt nesm∞rujφ ₧ßdnΘ odkazovΘ prom∞nnΘ, znamenß to, ₧e objekt ji₧ nenφ zapot°ebφ, a proto jej Garbage Collection z pam∞ti uvolnφ (obr. 3). á

 

 

Obr. 3 û Likvidace zb²vajφcφch referenΦnφch prom∞nn²ch a destrukce nepot°ebn²ch objekt∙

 

V²sledkem je tedy nejenom odstran∞nφ referenΦnφch prom∞nn²ch ze zßsobnφku, ale takΘ likvidace nepot°ebn²ch objekt∙ z °φzenΘ hromady. Jak ovÜem Garbage Collection zjistφ, ₧e objekt je nepot°ebn² a ₧e je mo₧nΘ jej odstranit? V uvedenΘm p°φkladu jsme si ukßzali, ₧e k destrukci objektu dojde v okam₧iku, kdy neexistujφ ₧ßdnΘ referenΦnφ prom∞nnΘ, kterΘ by uchovßvaly odkazy na tento objekt. GC tuto skuteΦnost zjistφ velice jednoduÜe podle podoby stromu odkaz∙. Kdy₧ poΦet odkaz∙ na objekt klesne na nulovou hodnotou, stßvß se objekt soustem pro Garbage Collection.

 

JeÜt∞ p°ed samotnou likvidacφ objektu je vÜak proveden k≤d, kter² se nachßzφ ve specißlnφ metod∞ objektu s nßzvem destruktor (destruktor v C# mß podobnou syntaxi jako jeho kolega z Managed Extensions for C++). Pomocφ destruktoru m∙₧e objekt provΘst jistΘ äΦistφcφô prßce, jako je nap°φklad uvoln∞nφ pam∞¥ov²ch zdroj∙, kterΘ byly alokovßny ne°φzen²mi prost°edky, Φi jinΘ pot°ebnΘ Φinnosti). Destruktor objektu implicitn∞ volß metodu Finalize bßzovΘ t°φdy objektu. á

áá

 

Garbage Collection pod drobnohledem

 

╪φzenß hromada je souvisl² ·sek pam∞ti, kter² je urΦen pro uklßdßnφ °φzen²ch objekt∙. Pokud bychom se na °φzenou hromadu podφvali blφ₧e, zjistili bychom, ₧e objekty jsou zde skladovanΘ v n∞kolika generacφch. Pojem generace v tomto kontextu p°edstavuje jistou ohraniΦenou oblasti pam∞ti uvnit° °φzenΘ hromady. Garbage Collection rozeznßvß t°φ generace: 0, 1 a 2. Rozd∞lenφ celΘ °φzenΘ hromady na menÜφ Φßsti, tedy generace, je velmi v²hodnΘ, proto₧e Garbage Collection nemusφ pracovat s celou °φzenou hromadou, ale jenom s odpovφdajφcφ generacφ, p°φpadn∞ generacemi. Rozd∞lenφ objekt∙ do jednotliv²ch generacφ se uskuteΦ≥uje v zßvislosti od ₧ivotnφch cykl∙ t∞chto objekt∙. V generaci 0 se nachßzejφ objekty, kterΘ byly vytvo°enΘ teprve nedßvno a u kter²ch je rovn∞₧ p°edpoklad, ₧e by jejich ä₧ivotô nemusel trvat p°φliÜ dlouho. Nultß generace je vyu₧φvßna nejΦast∞ji, proto₧e v∞tÜina aplikacφ vyu₧φvß mno₧stvφ sv²ch objekt∙ jenom po urΦitou, ovÜem ne dlouhou, dobu. Pokud je ₧ivotnφ cyklus objektu delÜφ, je mo₧nΘ, ₧e se dostane do generace 1. Generace 1 seskupuje objekty, pro kterΘ je charakteristickß st°ednφ doba ₧ivotnosti. KoneΦn∞, do poslednφ generace (s po°adov²m Φφslem 2), jsou uklßdßny dlouho ₧ijφcφ objekty, kterΘ jsou v jednotliv²ch etapßch svΘho ₧ivotnφho cyklu aktivn∞ a frekventovan∞ vyu₧φvßny. Je rovn∞₧ d∙le₧itΘ v∞d∞t, ₧e kapacitnφ nßroΦnost jednotliv²ch generacφ je variabilnφ. To znamenß, ₧e generace mohou uchovßvat objekty jenom po urΦitou kapacitnφ hranici. V p°φpad∞ nultΘ generace se tato hranice blφ₧φ 256 KB, u druhΘ generace je to p°ibli₧n∞ 2 MB a t°etφ generace je pak schopna pojmou objekty a₧ do maximßlnφ deseti megabajtovΘ hranice.áá

 

 

Generace 0 a Garbage Collection

 

Prßci Garbage Collection si budeme demonstrovat jeÜt∞ jednou, a to podrobn∞ji a s ohledem na vyu₧itφ generacφ objekt∙. Nejprve si vÜak uka₧me skuteΦnou, nikoliv idealizovanou, podobu °φzenΘ hromady s nultou generacφ objekt∙ (obr. 4).

 

 

Obr. 4 û SkuteΦnß podoba °φzenΘ hromady s nultou generacφ objekt∙

 

Na tomto obrßzku m∙₧ete vid∞t podobu °φzenΘ hromady s nultou generacφ objekt∙. Generaci 0 tvo°φ t°i objekty, u nich₧ m∙₧eme p°edpoklßdat, ₧e byly vytvo°eny teprve nedßvno (nßÜ p°edpoklad vychßzφ z teze, podle kterΘ jsou do generace 0 uklßdßny änejmladÜφô objekty). Za poslednφm objektem nultΘ generace je umφst∞n specißlnφ ukazatel, jen₧ ukazuje na pam∞¥ovou adresu, na kterou bude ulo₧en dalÜφ vytvo°en² objekt.

 

Na vÜechny t°i objekty jsou nasm∞rovßny odkazy p°inejmenÜφm t°φ referenΦnφch prom∞nn²ch, kterΘ jsou ulo₧enΘ na zßsobnφku. Tato skuteΦnost ovÜem nenφ v obrßzku znßzorn∞na.áá á

áá

Jestli₧e bude do generace 0 ulo₧en dalÜφ objekt, bude situace nßsledovnφ (obr. 5).

 

 

Obr. 5 û P°idßnφ dalÜφho objektu do nultΘ generace

 

Aby mohl b²t do nultΘ generace p°idßn dalÜφ objekt, budou uskuteΦn∞nΘ nßsledujφcφ operace:

 

  1. Garbage Collection zjistφ, zdali je v generaci 0 dostateΦnΘ mφsto pro ulo₧enφ novΘho objektu (p°ipome≥me, ₧e velikost nultΘ generace je p°ibli₧n∞ 256 KB). Jestli₧e je prostor dostateΦn², bude nov² objekt ulo₧en do generace 0 °φzenΘ hromady.
  2. Garbage Collection automaticky aktualizuje ukazatel, jen₧ obsahuje pam∞¥ovou adresu, na kterΘ bude umφst∞n dalÜφ vytvo°en² objekt. Nynφ tedy ukazatel ukazuje na pam∞¥ov² prostor za nov∞ p°idan²m objektem.
  3. Alokovan² prostor generace 0 se zv∞tÜφ o hodnotu, kterß odpovφdß kapacitnφ nßroΦnosti nov∞ p°idanΘho objektu.

 

V tΘto souvislosti by vßs mohla napadnout nßsledujφcφ otßzka: äA co se stane, kdy₧ bude p°ekroΦen pam∞¥ov² prostor nultΘ generace?ô. V tomto p°φpad∞ Garbage Collection provede n∞kolik Φinnostφ:

 

  1. Jeliko₧ nenφ v generaci 0 dostatek pam∞¥ovΘho prostoru pro ulo₧enφ dalÜφho objektu, GC provede zjiÜt∞nφ, zdali se v nultΘ generaci nenachßzejφ objekty, kterΘ by mohly b²t uvoln∞ny. Nepot°ebnΘ objekty jsou objekty, na kterΘ nesm∞rujφ ₧ßdnΘ odkazy referenΦnφch prom∞nn²ch. Najdou-li se v generaci 0 objekty tohoto typu, budou odstran∞ny. Takto zφskanΘ pam∞¥ovΘ mφsto bude zp°φstupn∞no pro dalÜφ nov∞ vytvo°enΘ objekty.
  2. Garbage Collection dßle realizuje proces p°emφst∞nφ objekt∙, a to tak, aby byl vytvo°en souvisl² celek objekt∙. D∙vodem pro vytvo°enφ souvislΘho celku objekt∙ v nultΘ generaci je skuteΦnost, ₧e k takto seskupen²m objekt∙m se rychleji p°istupuje.

á

Je to podobnΘ jako p°i defragmentaci pevnΘho disku. V rßmci defragmentace se spßjejφ fragmenty soubor∙ proto, aby pevn² disk mohl k souboru p°istupovat s co mo₧nß nejvyÜÜφ rychlostφ. Garbage Collection provßdφ n∞co podobnΘho, ovÜem neoperuje s daty soubor∙, n²br₧ s objekty °φzenΘ hromady.á

 

  1. Ihned po p°emφst∞nφ objekt∙ je nezbytn∞ nutnΘ takΘ aktualizovat ukazatele, kterΘ ukazovaly na objekty jeÜt∞ p°edtφm, ne₧ byl nastartovßn proces p°emφs¥ovßnφ objekt∙. Garbage Collection vÜem p°emφst∞n²m objekt∙m p°i°adφ novΘ pam∞¥ovΘ adresy, co₧ znamenß, ₧e i potΘ, co budou objekty p°elo₧enΘ na jinΘ mφsto, budou nadßle dostupnΘ pomocφ p°φsluÜn²ch referenΦnφch prom∞nn²ch.
  2. Do generace 0 budou p°idßny novΘ objekty.

 

Cel² proces prßce Garbage Collection m∙₧ete vid∞t na obr. 6.

 

 

Obr. 6 û Generace 0 a Garbage Collection

 

 

Generace 1 a Garbage Collection

 

Jak jste vid∞li, pokud Garbage Collection nalezne v nultΘ generaci nepot°ebnΘ objekty, postarß se o jejich likvidaci. V naÜφ ukßzce jsme p°φmo poΦφtali s touto mo₧nostφ, ovÜem ve skuteΦnosti se m∙₧e takΘ stßt, ₧e aΦkoliv bude generace 0 plnß, nebudou p°i prvnφm pr∙chodu Garbage Collection nalezeny ₧ßdnΘ nepot°ebnΘ objekty. Garbage Collection vφ, ₧e v tomto p°φpad∞ nem∙₧e odstranit ₧ßdn² objekt, proto₧e vÜechny objekty jsou po°ßd aktivnφ. Pokud tedy p°ijde po₧adavek na vytvo°enφ novΘho objektu, GC p°emφstφ n∞kterΘ objekty do generace 1. Objekty, kterΘ z∙stanou v generaci 0 jsou p°emφst∞nΘ, ukazatele na tyto objekty jsou aktualizovanΘ a je vytvo°en souvisl² blok objekt∙ (rovn∞₧ dochßzφ k aktualizaci specißlnφho ukazatele). Garbage Collection takΘ aktualizuje ukazatele na objekty v generaci 1. Objekty, kterΘ byly p°emφst∞nΘ do generace 1 jsou stßle ₧ivΘ a schopnΘ vykonßvat jakoukoliv Φinnost. JednoduÜe °eΦeno, p°esun objekt∙ mezi generacemi nijak neovlivnφ prßci t∞chto objekt∙. PotΘ, co Garbage Collection provede vÜe, co jsme si uvedli, p°idß do generace 0 novΘ objekty. Potencißlnφ podobu °φzenΘ hromady po vytvo°enφ generace 1 zobrazuje obr. 7.

 

 

Obr. 7 û Generace 1 a Garbage Collection

 

Na obrßzku jsou z°eteln∞ zobrazenΘ ob∞ generace objekt∙. VÜimn∞te si pozici specißlnφho ukazatele, jen₧ je nasm∞rovßn na pam∞¥ovou adresu, na nφ₧ bude ulo₧en nov² objekt. Jak m∙₧ete vid∞t, ukazatel se nachßzφ v generaci 0 a ne v generaci 1. Na prvnφ pohled to mo₧nß vypadß pon∞kud divn∞, ovÜem vÜe je v naprostΘm po°ßdku. Specißlnφ ukazatel je na tomto mφst∞ proto, ₧e jak²koliv nov² objekt bude automaticky ulo₧en do nultΘ generace. Kdy₧ bude v generaci 0 dostatek prostoru pro nov² objekt, bude objekt okam₧it∞ ulo₧en na mφsto, kterΘ je vyznaΦeno specißlnφm ukazatelem. V opaΦnΘm p°φpad∞ bude spuÜt∞n proces äsb∞ru odpadk∙ô, p°i kterΘm dojde k odstran∞nφ nepot°ebn²ch objekt∙, p°φpadn∞ takΘ k p°esunu objekt∙ s delÜφ ₧ivotnostφ do generace 1.

 

 

Generace 2 a Garbage Collection

 

Automatickß sprßva pam∞ti podporuje t°i generace objekt∙. Ano, jak byste mohli Φekat, poslednφ je generace s po°adov²m Φφslem 2. Do tΘto generace Garbage Collection umφs¥uje dlouho ₧ijφcφ objekty, kterΘ aΦkoliv nejsou vyu₧φvanΘ Φasto, jsou zapot°ebφ k sprßvnΘmu chodu aplikacφ. Objekty jsou do generace 2 p°esouvanΘ z generace 1 (nikdy ne z generace 0). Pokud je generace 1 plnß a p°ijde po₧adavek na p°esun objekt∙ z generace 0 do generace 1, Garbage Collection uskuteΦnφ pr∙zkum generace 1 a zjistφ, zdali se v tΘto generaci nenachßzejφ nepot°ebnΘ objekty. Pokud se najdou objekty, kterΘ ji₧ nejsou zapot°ebφ, GC na°φdφ jejich likvidaci. Jestli₧e je ovÜem generace 1 plnß, budou jistΘ objekty p°enesenΘ do generace 2, Φφm₧ se v generaci 1 uvolnφ po₧adovan² prostor (tento prostor bude nßsledn∞ vypln∞n objekty, kterΘ p°ichßzejφ z generace 0). P°i vÜech operacφch dochßzφ samoz°ejm∞ k ji₧ zmφn∞n²m Φinnostem, jako je kompaktnφ ulo₧enφ objekt∙ do souvislΘho bloku, aktualizace ukazatel∙ na tyto objekty a dalÜφ. Generace 2 je schopna objekt∙m nabφdnout ·lo₧iÜt∞ o velikosti p°ibli₧n∞ 10 MB. Pokud se systΘm dostane do extrΘmnφ situace a nastane zapln∞nφ generace 2, Garbage Collection vykonß pr∙zkum u vÜech generacφ (2, 1 a 0) a pokusφ se odstranit nepot°ebnΘ objekty a uvolnit mφsto na °φzenΘ hromad∞. Objekty, kterΘ se nachßzejφ v generaci 2 ji₧ ovÜem nejsou nikam p°emφs¥ovanΘ, proto₧e (prozatφm) neexistuje ₧ßdnß dalÜφ generace objekt∙.á

 

 

V²znam Garbage Collection pro programßtory

 

V zßv∞reΦnΘ Φßsti prozkoumßme p°φnosy, kterΘ p°inßÜφ Garbage Collection do ₧ivota nßs, programßtor∙. Automatickß sprßva pam∞ti vykonßvß p°esn∞ to, co je obsa₧eno v jejφm nßzvu, tedy automaticky kontroluje a v p°φpad∞ pot°eby takΘ odstra≥uje objekty z °φzenΘ hromady. Pokud budete pracovat s objekty (a v∞°te, ₧e s nimi se v prost°edφ .NET Frameworku st°etnete doslova na ka₧dΘm kroku), vaÜφm ·kolem bude pouze tvorba t∞chto objekt∙. Nemusφte se tedy zajφmat o explicitnφ odstra≥ovßnφ objekt∙ z pam∞ti poΦφtaΦe û to za vßs provede Garbage Collection. Jak jsme si v tΘto Φßsti naÜeho serißlu ukßzali, automatickß sprßva pam∞ti je dost chytrß na to, aby tento ·kol splnila bez jak²chkoliv v∞tÜφch potφ₧φ. Na druhou stranu, Garbage Collection pracuje s nedeterministickou finalizacφ, co₧ znamenß, ₧e programßto°i si nemohou b²t jisti, v jakΘm ΦasovΘm okam₧iku dojde k likvidaci jejich objekt∙. Jestli₧e jste d°φve programovali nap°φklad v jazyku C++, vφte, ₧e zde byla situace jinß: Sprßva objekt∙ byla zcela ve vaÜich rukou, ovÜem pokud jste pou₧ili operßtor delete na instanci t°φdy, mohli jste si b²t jisti, ₧e po₧adovanß instance byla ihned zlikvidovßna. I kdy₧ o tuto jistotu v prost°edφ platformy .NET Framework p°ichßzφte, nemusφte b²t zklamßnφ. Garbage Collection pracuje opravdu spolehliv∞ a jeÜt∞ k tomu zabra≥uje vzniku pom∞rn∞ Φast²ch programßtorsk²ch chyb (nap°. p°φliÜ brzkΘ odstran∞nφ objektu, nebo pokud o op∞tovnΘ odstran∞nφ ji₧ zlikvidovanΘho objektu). Prßce Garbage Collection s jednotliv²ch objekt∙ se dß v jist²m smyslu ovlivnit, ovÜem tuto problematiku si p°iblφ₧φme a₧ n∞kdy p°φÜt∞.

 

á

Jßn Hanßk