Sobes.tech
Junior — Middle

El tudná magyarázni, mi történik a finalize metódus hívásakor Java-ban, és milyen esetekben hívódik meg?

sobes.tech MI

Válasz az MI-től

Java-ban a finalize() metódust a szemétgyűjtő hívja meg, mielőtt az objektumot eltávolítja a memóriából. Feladata, hogy felszabadítsa azokat az erőforrásokat, amelyeket a JVM nem kezel, például fájlokat vagy hálózati kapcsolatokat.

Azonban a finalize() hívása nem garantált, késleltethet vagy egyáltalán nem is történhet meg, ezért nem ajánlott rá hagyatkozni az erőforrások felszabadítására.

Használati példa:

@Override
protected void finalize() throws Throwable {
    try {
        // Erőforrások felszabadítása
    } finally {
        super.finalize();
    }
}

A modern Java verziókban ajánlott a try-with-resources szerkezetek használata vagy az erőforrások explicit bezárása, a finalize()-tól való függés helyett.