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.