Sobes.tech
Junior — Middle

Kas vyksta, kai kviečiama finalize metodas Java objekte ir kokius išteklius jis gali atlaisvinti?

sobes.tech AI

Atsakymas iš AI

Java, finalize() metodas kviečiamas šiukšlių surinkėjo prieš objektą pašalinant iš atminties. Šis metodas skirtas atlaisvinti nevaldomus išteklius, kurie nėra automatiškai valomi, pavyzdžiui:

  • Failų deskriptorių uždarymas
  • Tinklo ryšių atlaisvinimas
  • Natyvinių išteklių valymas

Tačiau finalize() naudojimas nerekomenduojamas, nes jo kvietimas nėra garantuotas ir gali sukelti vėlavimus išlaisvinant išteklius. Šiuolaikiniai požiūriai siūlo naudoti try-with-resources arba aiškų išteklių atlaisvinimą.

Pavyzdys:

@Override
protected void finalize() throws Throwable {
    try {
        // išteklių atlaisvinimas
    } finally {
        super.finalize();
    }
}