Junior
Kur saugomi objektai atmintyje?
sobes.tech AI
Atsakymas iš AI
Objektai atmintyje saugomi heap srityje.
Heap yra dinamiškai paskirta atminties sritis, kurioje objektai yra išdėstomi programos vykdymo metu. Objektų dydis iš anksto nežinomas, ir jie yra pašalinami šiukšlių surinkėjo.
Priminiai duomenų tipai (visų skaičių, loginės reikšmės ir kt.) dažniausiai saugomi stack. Stack yra statinis atminties plotas, naudojamas vietiniams kintamiesiems ir funkcijų iškvietimų informacijai saugoti, ir jis valdomas automatiškai.
Objektų nuorodos (t.y., adresai heap'e) saugomos stack'e arba kituose heap objektuose.
Pavyzdys Java:
// Priminio tipo kintamasis (int) saugomas stack'e.
int count = 10;
// Nuorodos kintamasis (myObject) saugomas stack'e.
// Pats MyObject objektas sukuriamas heap'e.
MyObject myObject = new MyObject();
// Priminis tipas objekto viduje (id) saugomas kaip objekto dalis heap'e.
myObject.setId(1);
// Nuoroda į kitą objektą (anotherObject) viduje myObject
// saugoma kaip myObject dalis heap'e. AnotherObject taip pat heap'e.
myObject.setRelatedObject(new AnotherObject());
class MyObject {
private int id; // saugomas heap'e (kaip MyObject dalis)
private AnotherObject relatedObject; // nuoroda heap'e
public void setId(int id) {
this.id = id;
}
public void setRelatedObject(AnotherObject relatedObject) {
this.relatedObject = relatedObject;
}
}
class AnotherObject {
// ...
}
Santrauka:
- Stack: Priminiai tipai, nuorodos į objektus.
- Heap: Patys objektai, turintys savo laukus (įskaitant primityvius tipus ir nuorodas į kitus objektus).