Junior
Τι είναι ο συλλέκτης απορριμμάτων (Garbage Collector);
sobes.tech AI
Απάντηση από AI
Μηχανισμός αυτόματης διαχείρισης μνήμης που απελευθερώνει άχρηστα αντικείμενα στη στοίβα.
Αρχές λειτουργίας:
- Ανίχνευση προσβασιμότητας αντικειμένων: Παρακολουθεί τα αντικείμενα στα οποία αναφέρονται ζωντανά (προσβάσιμα) αντικείμενα από τις ρίζες (π.χ., την στοίβα των νημάτων).
- Απελευθέρωση μη προσβάσιμων αντικειμένων: Τα αντικείμενα χωρίς αναφορές θεωρούνται "σκουπίδια" και η μνήμη τους μπορεί να επαναχρησιμοποιηθεί.
Τύποι συλλεκτών σκουπιδιών (ανάλογα με τη γλώσσα/πλατφόρμα):
- Mark and Sweep: Σημαδεύει τα προσβάσιμα αντικείμενα (σηματοδότηση), στη συνέχεια διατρέχει τη στοίβα και απελευθερώνει τα μη σημαδεμένα (καθαρισμός). Μπορεί να προκαλέσει διαμόρφωση μνήμης.
- Copying: Διαιρεί τη στοίβα σε δύο μέρη. Αντιγράφει ζωντανά αντικείμενα στο νέο μέρος, στη συνέχεια καθαρίζει το παλιό. Προλαμβάνει τη διαμόρφωση, αλλά απαιτεί περισσότερη μνήμη.
- Γενεακός: Διαχωρίζει τα αντικείμενα κατά ηλικία σε γενιές. Συλλέγει σκουπίδια πιο συχνά στη "νέα" γενιά, όπου τα περισσότερα αντικείμενα δεν ζουν πολύ.
Πλεονεκτήματα:
- Μειώνει την πιθανότητα διαρροών μνήμης.
- Απλοποιεί την ανάπτυξη (δεν χρειάζεται να ελευθερώνεις ρητά τη μνήμη).
Μειονεκτήματα:
- Μπορεί να προκαλέσει καθυστερήσεις (παύσεις) κατά τη συλλογή.
- Ο χρόνος συλλογής είναι απρόβλεπτος.