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