Posted By: Rat (prilis mnoho her) on 'CZprogram'
Title: Re: garbage collectoryyy
Date: Thu Nov 4 11:13:34 2004
> > proc by implementace nemohla vypadat ala Quasimodo. Tzn., v okamziku
> > dereference na nulu se objekt znici okamzite a neceka se na GC. (mozna
> jsem
> > ted uplne mimo debatu ;) ). Dokazu si predstavit, ze presunuti vsech
> > finalizeru do jedineho threadu muze mit jiste vyhody, ale to stejne neni u
>
> > Javy uplne pravda, ne?
>
> OK, mas pravdu, pokud by GC byla optimalizovana timto zpusobem, pak by mohlo
> vzniknout pravidlo "zdroje v destruktoru uvolnovat muzete, ale pouze pokud
> jste si jisti, ze vas objekt nemuze zustat vzajemne referencovany s jinym
> nepouzivanym objektem, nebot pak je treba cekat na GC, ktery nemusi prijit
> nikdy".
Proc? Priznam se, ze neznam presne detaily fungovani GC, nicmene ma predstava
je, ze v okamziku zavolani destruktoru neni reference ani z jinych
nepouzivanych objektu. Tzn. v pripade puvodni cross-reference se nejdrive
nastavi pointer z druheho objektu na prvni na NULL a pote se teprve zavola
destruktor (ci jakkoli to nazveme) prvniho objektu. V opacnem pripade by byly
destruktory skutecne nepouzitelne ;)
... pochopitelne v popsanem pripade s onou nekonsistenci musi onen destruktor
nejakym zpusobem pocitat (ze mu nekdo za jeho zady prenastavi pointer apod.).
Krysa
rat@atrey.karlin.mff.cuni.cz Jsem Krysa
http://atrey.karlin.mff.cuni.cz/~rat/