Sobes.tech
Junior — Middle

Πώς πραγματοποιείται η αυτόματη συλλογή απορριμμάτων σε διαχειριζόμενες γλώσσες προγραμματισμού;

sobes.tech AI

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

Η αυτόματη συλλογή απορριμμάτων (Garbage Collection, GC) σε διαχειριζόμενες γλώσσες όπως η C# υλοποιείται μέσω ενός ειδικού μηχανισμού που παρακολουθεί τα αντικείμενα στη μνήμη και απελευθερώνει αυτά στα οποία δεν υπάρχουν πλέον αναφορές.

Βασικές αρχές του GC:

  • Παρακολούθηση αναφορών: Το GC καθορίζει ποια αντικείμενα είναι προσβάσιμα από τις ριζικές αναφορές (π.χ., τοπικές μεταβλητές, στατικά πεδία).
  • Εντοπισμός μη προσβάσιμων αντικειμένων: Τα αντικείμενα χωρίς αναφορές θεωρούνται απορρίμματα.
  • Απελευθέρωση μνήμης: Το GC απελευθερώνει τη μνήμη που καταλαμβάνεται από μη προσβάσιμα αντικείμενα.
  • Γενιές: Για βελτιστοποίηση της συλλογής απορριμμάτων, διαιρείται σε γενιές (Gen 0, Gen 1, Gen 2), επιτρέποντας να συλλέγονται πιο συχνά τα νεαρά αντικείμενα και πιο σπάνια τα μακρόβια.

Παράδειγμα σε C#:

class Program
{
    static void Main()
    {
        var obj = new object();
        // χρήση του obj
        obj = null; // το αντικείμενο γίνεται μη προσβάσιμο
        GC.Collect(); // αναγκαστική εκτέλεση του συλλέκτη απορριμμάτων (σπάνια χρησιμοποιείται σε πραγματικές εφαρμογές)
    }
}

Έτσι, ο προγραμματιστής απαλλάσσεται από την ανάγκη χειροκίνητης διαχείρισης της μνήμης, μειώνοντας τα σφάλματα που σχετίζονται με διαρροές μνήμης.