Junior — Middle
Mi történik, amikor a finalize metódust hívjuk egy Java objektumon, és milyen erőforrásokat szabadíthat fel?
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. Ez a módszer arra szolgál, hogy felszabadítson nem kezelt erőforrásokat, amelyek nem kerülnek automatikusan megtisztításra, például:
- Fájldeskriptorok bezárása
- Hálózati kapcsolatok felszabadítása
- Natív erőforrások tisztítása
Azonban a finalize() használata nem ajánlott, mivel a hívása nem garantált, és késedelmet okozhat az erőforrások felszabadításában. A modern megközelítések a try-with-resources vagy az erőforrások explicit felszabadítását javasolják.
Példa:
@Override
protected void finalize() throws Throwable {
try {
// erőforrások felszabadítása
} finally {
super.finalize();
}
}