Junior — Middle
Πώς διαχειρίζεται και δομείται η μνήμη στο περιβάλλον C#;
sobes.tech AI
Απάντηση από AI
Στην C#, η διαχείριση μνήμης πραγματοποιείται αυτόματα μέσω του συλλέκτη απορριμμάτων (Garbage Collector, GC). Η μνήμη διαιρείται σε δύο κύριες περιοχές:
- Στοίβα (Stack) — αποθηκεύει τοπικές μεταβλητές και παραμέτρους μεθόδων. Η μνήμη κατανεμόταν και ελευθερώνεται πολύ γρήγορα σύμφωνα με την αρχή LIFO.
- Απόθεμα (Heap) — αποθηκεύει αντικείμενα και δεδομένα που διαρκούν περισσότερο από τον χρόνο εκτέλεσης της μεθόδου. Η μνήμη στο απόθεμα διαχειρίζεται από τον συλλέκτη απορριμμάτων.
Ο συλλέκτης απορριμμάτων ελευθερώνει περιοδικά τη μνήμη που καταλαμβάνεται από αντικείμενα στα οποία δεν υπάρχουν πλέον αναφορές. Αυτό απαλλάσσει τον προγραμματιστή από την ανάγκη χειροκίνητης διαχείρισης μνήμης και μειώνει τον κίνδυνο διαρροών μνήμης.
Παράδειγμα δημιουργίας αντικειμένου στο απόθεμα:
class Program
{
static void Main()
{
Person p = new Person(); // το αντικείμενο δημιουργείται στο απόθεμα
}
}
class Person
{
public string Name { get; set; }
}
Εδώ, το αντικείμενο Person δημιουργείται στο απόθεμα, και η μεταβλητή p βρίσκεται στη στοίβα, αναφερόμενη σε αυτό το αντικείμενο.