Junior — Middle
Μπορείτε να εξηγήσετε τι συμβαίνει όταν καλείται η μέθοδος finalize στη Java και σε ποιες περιπτώσεις καλείται;
sobes.tech AI
Απάντηση από AI
Στην Java, η μέθοδος finalize() καλείται από τον συλλέκτη απορριμμάτων πριν από τη διαγραφή ενός αντικειμένου από τη μνήμη. Ο σκοπός της είναι να απελευθερώσει πόρους που δεν διαχειρίζεται η JVM, όπως το κλείσιμο αρχείων ή δικτυακών συνδέσεων.
Ωστόσο, η κλήση της finalize() δεν είναι εγγυημένη και μπορεί να συμβεί με καθυστέρηση ή καθόλου, επομένως δεν συνιστάται να βασίζεστε σε αυτήν για την απελευθέρωση πόρων.
Παράδειγμα χρήσης:
@Override
protected void finalize() throws Throwable {
try {
// Απελευθέρωση πόρων
} finally {
super.finalize();
}
}
Στις σύγχρονες εκδόσεις Java, συνιστάται η χρήση κατασκευών try-with-resources ή η ρητή κλεισίματος πόρων, αντί να βασίζεστε στη finalize().