Sobes.tech
Junior — Middle

Πώς λειτουργεί ο συλλέκτης απορριμμάτων και ποιες περιοχές μνήμης καθαρίζει: heap ή stack;

sobes.tech AI

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

Ο συλλέκτης απορριμμάτων (Garbage Collector) στο Go απελευθερώνει αυτόματα τη μνήμη που δεν χρησιμοποιείται πλέον από το πρόγραμμα. Λειτουργεί με την περιοχή μνήμης heap, όπου τοποθετούνται τα δυναμικά κατανεμημένα αντικείμενα.

Η στοίβα (stack) είναι μια περιοχή μνήμης για τοπικές μεταβλητές και κλήσεις συναρτήσεων, η οποία διαχειρίζεται αυτόματα κατά την είσοδο και έξοδο από τις συναρτήσεις, και ο συλλέκτης απορριμμάτων δεν την καθαρίζει.

Ο μηχανισμός λειτουργίας του συλλέκτη απορριμμάτων στο Go βασίζεται στον αλγόριθμο ανίχνευσης προσβασιμότητας: βρίσκει όλα τα αντικείμενα προσβάσιμα από τα ριζικά σημεία (στοίβα, παγκόσμιες μεταβλητές) και διαγράφει αυτά στα οποία δεν υπάρχουν αναφορές.

Έτσι, ο συλλέκτης απορριμμάτων καθαρίζει το heap, και η στοίβα διαχειρίζεται από το σύστημα κλήσεων και απελευθερώνεται αυτόματα.