Sobes.tech
Junior

Kas yra heap ir stack?

sobes.tech AI

Atsakymas iš AI

Heap ir Stack yra dvi atminties sritys, kurias naudoja programos duomenų saugojimui.

  • Stack (krovinys) yra atminties sritis, kurioje saugomos vietinės kintamosios, funkcijų parametrai ir grįžimo adresai. Ji veikia pagal LIFO (paskutinis įeina, pirmas išeina) principą. Kai iškviečiama funkcija, jai skiriamas blokas stako, o baigus, jis laisvas. Stakas turi ribotą dydį ir automatiškai valdomas.

  • Heap (krūva) yra atminties sritis, skirta dinamiškai skirti objektus ir duomenis, kurių dydis gali keistis programos vykdymo metu. Java objektai kuriami krūvoje, o šiukšlių surinkėjas automatiškai atlaisvina nenaudojamą atmintį.

Pavyzdys:

public void pavyzdys() {
    int a = 10; // saugoma stako
    String s = new String("Labas"); // objektas String kuriamas krūvoje
}

Čia a yra vietinė kintamoji stako, o String objektas — krūvoje.