Sobes.tech
Junior

Und sunt stocate obiectele în memorie?

sobes.tech AI

Răspuns de la AI

Obiectele din memorie sunt stocate în heap.

Heap-ul este o zonă de memorie alocată dinamic, unde sunt plasate obiectele în timpul execuției programului. Dimensiunea obiectelor nu este cunoscută în prealabil și acestea sunt eliminate de colectorul de gunoi.

Tipurile de date primitive (numere întregi, valori boolean, etc.) sunt de obicei stocate în stivă (stack). Stiva este o zonă de memorie alocată static, folosită pentru stocarea variabilelor locale și a informațiilor despre apelurile de funcții, și este gestionată automat.

Referințele către obiecte (adică, adresele în heap) sunt stocate în stivă sau în alte obiecte din heap.

Exemplu în Java:

// Variabila de tip primitiv (int) este stocată în stivă.
int count = 10;

// Variabila de referință (myObject) este stocată în stivă.
// Obiectul MyObject în sine este creat în heap.
MyObject myObject = new MyObject();

// Tipul primitiv din interiorul obiectului (id) este stocat ca parte a obiectului în heap.
myObject.setId(1);

// Referința la alt obiect (anotherObject) din interiorul myObject
// este stocată ca parte a myObject în heap. AnotherObject însuși este în heap.
myObject.setRelatedObject(new AnotherObject());

class MyObject {
    private int id; // stocat în heap (ca parte a MyObject)
    private AnotherObject relatedObject; // referință stocată în heap

    public void setId(int id) {
        this.id = id;
    }

    public void setRelatedObject(AnotherObject relatedObject) {
        this.relatedObject = relatedObject;
    }
}

class AnotherObject {
    // ...
}

În concluzie:

  • Stivă (stack): Tipuri primitive, referințe către obiecte.
  • Heap: Obiectele propriu-zise, care conțin propriile câmpuri (inclusiv tipurile primitive din interiorul obiectelor și referințele către alte obiecte).