Sobes.tech
Junior — Middle

Τι συμβαίνει όταν καλείται η μέθοδος finalize σε ένα αντικείμενο στη Java και ποια πόροι μπορεί να απελευθερώσει;

sobes.tech AI

Απάντηση από AI

Στη Java, η μέθοδος finalize() καλείται από τον συλλέκτη απορριμμάτων πριν από τη διαγραφή ενός αντικειμένου από τη μνήμη. Αυτή η μέθοδος προορίζεται για την απελευθέρωση μη διαχειριζόμενων πόρων που δεν καθαρίζονται αυτόματα, όπως:

  • Κλείσιμο περιγραφέων αρχείων
  • Απελευθέρωση δικτυακών συνδέσεων
  • Καθαρισμός native πόρων

Ωστόσο, η χρήση της finalize() δεν συνιστάται, καθώς η κλήση της δεν είναι εγγυημένη και μπορεί να προκαλέσει καθυστερήσεις στην απελευθέρωση πόρων. Οι σύγχρονες προσεγγίσεις προτείνουν τη χρήση try-with-resources ή την ρητή απελευθέρωση πόρων.

Παράδειγμα:

@Override
protected void finalize() throws Throwable {
    try {
        // απελευθέρωση πόρων
    } finally {
        super.finalize();
    }
}