Posted By: PaJaSoft (Menhir Mover & Linux Man) on 'CZprogram'
Title:     Re: garbage collectoryyy
Date:      Fri Dec  3 16:40:26 2004

> Domnivas se, ze by mel GC uvolnost objekty v okamziku, kdy refcount
> klesne na nulu nebo ne? Resp. ze by na kazdy kazdy ubytek reference
> mela byt navesena kontrola, zda refcount neni nahodou nula, pripadne
> pokud nam objekt nedrzi nejaka temer dereferencovana cross-reference?

     Ano v tomto okamziku MUZE, nikoli musi...

> Pokud ano, nekdo jiny namital, ze by to bylo dost drahe, kazdopadne
> jsem o tom nic nepsal.

     Proto taky GC zpravidla bezi jako Thread s nejnizsi prioritou (nejsem si 
jist, zda-li jiz zmineny System.gc() neudela pouze to, ze tu prioritu zvysi) a 
postupne prochazi ty refcounty, pokud je 0, zrusi objekt... co na tom, ze 
dneska stihl zrusit 2 objekty, za tyden dalsi dva apod...

     Aspon takto to do dnes vidim ja...:-) 

> Pokud ne, znamena to, ze nechavame na GC, kdy zasahne, tudiz doba,
> kdy dojde k zniceni objektu (a volani pripadneho destructoru, neni
> predvidatelna, pak nelze na vcasne volani destruktoru spolehat.

     Pokud destruktorem myslis metodu finalize() tridy, tak dle napr. Ivor 
Horton's Beginning Java 2 SDK 1.4 Edition (ISBN 0-7645-4365-2) str. 
230 predposledni ostavec - skutecne neni zaruceno zavolani teto metody ze 
strany JVM. Jednoduse, pokud je refcount=0, GC nahodou ten objekt prochazi a 
program bezi dal, tak finalize je zavolano, pokud objekt zije az do ukonceni 
JVM, tak na finalize() se rada NIKDY nedostane.

     Na druhou stranu vyvolani finalize() vsech rusenych objektu muzeme 
trochu pomoci, pro zmenu pomoci System.runFinalization(); Opet ale neni 
zaruceno, ze skutecne se ty metody zavolaji...

 ..s usmevem a laskou jde vsechno lip, nezapominejte na to v zivote..

                                                                     PaJaSoft

Search the boards