Sobes.tech
Junior — Middle

Kas võib selgitada, mis juhtub, kui Java-s kutsutakse välja finalize meetod ja millal see toimub?

sobes.tech AI

Vastus AI-lt

Java keeles finalize() meetod kutsutakse prügikoristaja poolt enne objekti eemaldamist mälust. Selle ülesandeks on vabastada ressursid, mida JVM ei halda, näiteks failide või võrguliikide sulgemine.

Kuid finalize() kutsumine ei ole garanteeritud ja võib toimuda viivitusega või üldse mitte, seetõttu ei ole soovitatav sellele toetuda ressursside vabastamisel.

Kasutusnäide:

@Override
protected void finalize() throws Throwable {
    try {
        // Ressursside vabastamine
    } finally {
        super.finalize();
    }
}

Tänapäevastes Java versioonides soovitatakse kasutada try-with-resources konstruktsioone või ressursse selgelt sulgeda, mitte loota finalize()-ile.