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

Search the boards