Junior — Middle
Čo sa deje pri volaní metódy finalize na objekte v Jave a aké zdroje môže uvoľniť?
sobes.tech AI
Odpoveď od AI
V Jave sa volan finalize() pred odstranitvijo objekta iz pomnilnika kliče zbiralnik smeti. Ta metoda je namenjena za sprostitev neurejenih virov, ki se ne čistijo samodejno, na primer:
- Zapiranje datotečnih opisovalcev
- Sprostitev omrežnih povezav
- Čiščenje nativnih virov
Vendar pa uporaba finalize() ni priporočljiva, saj njen klic ni zagotovljen in lahko povzroči zamude pri sprostitvi virov. Sodobni pristopi priporočajo uporabo try-with-resources ali eksplicitno sprostitev virov.
Primer:
@Override
protected void finalize() throws Throwable {
try {
// sprostitev virov
} finally {
super.finalize();
}
}