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.