Sobes.tech
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();
    }
}