Sobes.tech
Junior — Middle

Mida juhtub, kui Java objekti finalize meetodit kutsutakse ja milliseid ressursse see võib vabastada?

sobes.tech AI

Vastus AI-lt

Java-s, finalize() meetod kutsutakse prügikoristaja poolt enne objekti eemaldamist mälust. See meetod on mõeldud hallatavate ressursside vabastamiseks, mis ei puhastata automaatselt, näiteks:

  • Faili kirjeldajate sulgemine
  • Võrguühenduste vabastamine
  • Põhiväliste ressursside puhastamine

Kuid finalize() kasutamine ei ole soovitatav, kuna selle kutsumine ei ole garanteeritud ja võib põhjustada ressursside vabastamise viivitusi. Kaasaegsed lähenemised soovitavad kasutada try-with-resources või ressursside selget vabastamist.

Näide:

@Override
protected void finalize() throws Throwable {
    try {
        // ressursside vabastamine
    } finally {
        super.finalize();
    }
}