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