Sobes.tech
Junior — Middle

Kas notiek, kad tiek izsaukta finalize metode Java objektā un kādus resursus tas var atbrīvot?

sobes.tech AI

Atbilde no AI

Java valodā finalize() metode tiek izsaukts atkritumu savācējs pirms objekta dzēšanas no atmiņas. Šī metode ir paredzēta nevadāmu resursu atbrīvošanai, kas netiek automātiski tīrīti, piemēram:

  • Failu deskriptoru aizvēršana
  • Tīkla savienojumu atbrīvošana
  • Nativu resursu tīrīšana

Tomēr finalize() lietošana nav ieteicama, jo tā izsaukšana nav garantēta un var radīt kavēšanos resursu atbrīvošanā. Mūsdienu pieejas iesaka izmantot try-with-resources vai skaidru resursu atbrīvošanu.

Piemērs:

@Override
protected void finalize() throws Throwable {
    try {
        // resursu atbrīvošana
    } finally {
        super.finalize();
    }
}