Posted By: Koles (www.jablok.cz) on 'CZprogram'
Title: Re: garbage collectory
Date: Tue Nov 2 22:39:18 2004
> > GC nevi, jestli dany objekt drzi nudny retezec a nebo pripojeni k databazi
> > a neda niceni takovehoto objektu prioritu. Takze se ti behem marneho
> > cekani na zasah GC mohou "drahe" objekty nahromadit.
>
> Jak nevi? V okamziku, kdy neni nikde referencovan, je mozne object znicit,
> ne?? At je to konexe na databasi ci cokoliv jineho.
Konkretni priklad:
public class Test {
private Object mrkev;
}
Predstav si, ze mas dve instance tridy Test. Zadna neni referencovana,
jsou tedy kandidaty na zniceni. Jedna ovsem ma v promenne mrkev databazovou
konekci, druha String.
Jak jsem psal - "GC nevi, jestli dany objekt drzi nudny retezec a nebo
pripojeni k databazi" (tj. co je v promenne Mrkev).
Jiste se shodneme na tom, ze je kravina zadratovat to jadra JVM kvanta
kontrol typu "jestli je promenna instanci javax.sql.Connection, tak to
zahod, jak jen je mozne" ;)
Pak tedy je patrne, ze se nesmis spolehat na to, ze GC zacne nejak
rychle nicit instanci tridy Test, ktera ma v promenne "mrkev" pripojeni
k databazi. Tudiz uzavirani tohoto pripojeni az v "destruktoru" tridy
Test (jak bylo navrhovano v predchozi debate) je nesmysl.
Verim, ze tohle je ti vsechno jasne - mozna nepozornost pri cteni?
> > Proto je lepsi, neni-li zadny "destruktor" poskytovan (v Jave sice neco
> > takoveho je ci bylo, ale z vyse uvedenych duvodu se to doporucuje
> > ignorovat),
> > aspon to programatory nesvadi k chybnemu spolehani na GC.
>
> Tahle veta nedava smysl
Smysl mi dava. Vynecham-li zavorku a preformuluju-li ji, dostanu treba
"Z vyse uvedenych duvodu je lepsi, kdyz neni zadny 'destruktor'
[jazykem] poskytovan, nebot to programatory nesvadi k chybnemu spolehani
se na GC". Je to tak lepsi? :-)
Pavel