Junior — Middle
Sú všetky objekty triedy povinne zničené pri opustení bloku try, v ktorom boli vytvorené?
sobes.tech AI
Odpoveď od AI
Nie, nie všetky objekty triedy sú nevyhnutne zničené pri opustení bloku try, v ktorom boli vytvorené. V Jave spravuje správu pamäte garbage collector a objekty sú odstraňované iba vtedy, keď na ne už nie sú žiadne odkazy.
Napríklad, ak je objekt vytvorený vo vnútri try, ale odkaz naň je uložený mimo tohto bloku, objekt bude naďalej existovať po opustení try:
MyObject obj;
try {
obj = new MyObject();
// použitie obj
} finally {
// finally blok
}
// obj je ešte dostupný tu
Ak objekt po opustení bloku nemá žiadne odkazy, stáva sa kandidátom na zber odpadu, ale okamih odstránenia nie je garantovaný ihneď.
Preto životný cyklus objektu závisí od rozsahu a existencie odkazov, nie len od try bloku.