Sobes.tech
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ą.