Junior — Middle
Kaip valdomas ir struktūruojamas atmintis C# aplinkoje?
sobes.tech AI
Atsakymas iš AI
C# kalba automatinė atminties valdymas vyksta naudojant šiukšlių surinkėją (Garbage Collector, GC). Atmintis padalinta į dvi pagrindines sritis:
- Stekas (Stack) — saugo vietines kintamąsias ir metodų parametrus. Atmintis labai greitai paskirstoma ir atlaisvinama pagal LIFO principą.
- Heap (Heap) — saugo objektus ir duomenis, kurie gyvena ilgiau nei metodo vykdymo laikotarpis. Heap atmintį valdo šiukšlių surinkėjas.
Šiukšlių surinkėjas periodiškai atlaisvina atmintį, užimamą objektų, į kuriuos daugiau nėra nuorodų. Tai palengvina programuotojui rankinį atminties valdymą ir sumažina nuotėkio riziką.
Pavyzdys, kaip kuriamas objektas heap'e:
class Program
{
static void Main()
{
Person p = new Person(); // objektas sukuriamas heap'e
}
}
class Person
{
public string Name { get; set; }
}
Čia Person objektas sukuriamas heap'e, o kintamasis p yra steke, nurodantis į šį objektą.