Junior — Middle
Πώς ανιχνεύει ο συλλέκτης απορριμμάτων ότι ένα αντικείμενο δεν χρησιμοποιείται πλέον και μπορεί να διαγραφεί;
sobes.tech AI
Απάντηση από AI
Ο συλλέκτης απορριμμάτων (Garbage Collector) στο Android (βασισμένος σε JVM ή ART) καθορίζει ότι ένα αντικείμενο δεν χρησιμοποιείται πλέον εάν δεν υπάρχουν ενεργές αναφορές σε αυτό από ριζικά αντικείμενα, όπως στοίβες νημάτων, στατικά πεδία κ.λπ.
Η διαδικασία είναι περίπου η εξής:
- Ο συλλέκτης ξεκινά από τα ριζικά αντικείμενα και σημαδεύει όλα τα αντικείμενα που μπορούν να προσεγγιστούν μέσω αναφορών.
- Όλα τα μη σημαδεμένα αντικείμενα θεωρούνται απροσπέλαστα και μπορούν να διαγραφούν.
Έτσι, αν ένα αντικείμενο δεν είναι προσβάσιμο από τον ενεργό κώδικα, θεωρείται απορρίμματα και υπόκειται σε συλλογή.
Αυτό ονομάζεται αλγόριθμος βάθους-πρώτα ή σημαδεύοντας και καθαρίζοντας (mark-and-sweep).