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