Sobes.tech
Middle+

Ποια είναι τα χαρακτηριστικά του συλλέκτη απορριμμάτων στη γλώσσα Dart;

sobes.tech AI

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

Ο συλλέκτης απορριμμάτων στο Dart βασίζεται στον αλγόριθμο Γενεακής Συλλογής Απορριμμάτων.

Χαρακτηριστικά:

  • Γενεακός: Τα αντικείμενα χωρίζονται σε "νέα" (νέος χώρος) και "παλιά" (παλαιός χώρος). Τα περισσότερα αντικείμενα δεν ζουν πολύ, επομένως η συλλογή των "νέων" αντικειμένων γίνεται πιο συχνά και γρήγορα.
  • Αλγόριθμος με δύο δάχτυλα: Χρησιμοποιείται για τη συλλογή "νέων" αντικειμένων. Δύο δείκτες διατρέχουν το γράφο των ζωντανών αντικειμένων, μετακινώντας τα ζωντανά αντικείμενα στη "παλαιά" γενιά.
  • Σήμανση-Καθαρισμός: Εφαρμόζεται για τη συλλογή "παλαιών" αντικειμένων. Πρώτα, σημειώνονται τα ζωντανά αντικείμενα, και στη συνέχεια διαγράφονται όλα τα μη σημειωμένα.
  • Stop-the-World: Η συλλογή απορριμμάτων διακόπτει την εκτέλεση του προγράμματος. Ωστόσο, η προσεγγισή Γενεακής μειώνει τη διάρκεια αυτών των διακοπών μέσω συχνής και γρήγορης συλλογής της "νέας" γενιάς.
  • Συμπίεση (Old Space): Μετά τη φάση Σήμανσης-Καθαρισμού, ο συλλέκτης μπορεί να συμπιέσει την "παλαιά" γενιά, μειώνοντας τον κατακερματισμό της μνήμης.
  • Χωρίς καταστροφείς: Στο Dart, δεν υπάρχουν καταστροφείς με την παραδοσιακή έννοια. Οι πόροι απελευθερώνονται αυτόματα από τον συλλέκτη απορριμμάτων.

Το κύριο πλεονέκτημα του Γενεακού GC στο Dart είναι η υψηλή απόδοση χάρη στην βελτιστοποίηση για περιπτώσεις όπου τα περισσότερα από τα δεσμευμένα αντικείμενα γίνονται γρήγορα μη προσβάσιμα.