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(); // αναγκαστική εκτέλεση του συλλέκτη απορριμμάτων (σπάνια χρησιμοποιείται σε πραγματικές εφαρμογές)
}
}
Έτσι, ο προγραμματιστής απαλλάσσεται από την ανάγκη χειροκίνητης διαχείρισης της μνήμης, μειώνοντας τα σφάλματα που σχετίζονται με διαρροές μνήμης.