Junior
Gde se objekti čuvaju u memoriji?
sobes.tech АИ
Одговор од АИ
Objekti u memoriji se čuvaju u heap.
Heap je dinamički dodeljeni prostor memorije gde se objekti smeštaju tokom izvršavanja programa. Veličina objekata nije unapred poznata, a oni se uklanjaju od strane sakupljača smeća.
Primitivni tipovi podataka (celi brojevi, booleovi i sl.) obično se čuvaju u stack-u. Stack je statički dodeljeni prostor memorije koji se koristi za skladištenje lokalnih promenljivih i informacija o pozivima funkcija, i automatski se upravlja.
Referencije na objekte (tj. adrese u heap-u) se čuvaju u stack-u ili u drugim objektima u heap-u.
Primer u Javi:
// Promenljiva primitivnog tipa (int) se čuva u stack-u.
int count = 10;
// Referentna promenljiva (myObject) se čuva u stack-u.
// Sam objekat MyObject se kreira u heap-u.
MyObject myObject = new MyObject();
// Primitivni tip unutar objekta (id) se čuva kao deo objekta u heap-u.
myObject.setId(1);
// Referenca na drugi objekat (anotherObject) unutar myObject
// se čuva kao deo myObject u heap-u. Sam AnotherObject je u heap-u.
myObject.setRelatedObject(new AnotherObject());
class MyObject {
private int id; // čuva se u heap-u (kao deo MyObject)
private AnotherObject relatedObject; // referenca u heap-u
public void setId(int id) {
this.id = id;
}
public void setRelatedObject(AnotherObject relatedObject) {
this.relatedObject = relatedObject;
}
}
class AnotherObject {
// ...
}
Zaključno:
- Stack: Primitivni tipovi, reference na objekte.
- Heap: Sami objekti, koji sadrže svoja polja (uključujući primitivne tipove unutar objekata i reference na druge objekte).