Sobes.tech
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();
    }
}