Sobes.tech
Junior

Kur atrodas objekti atmiņā?

sobes.tech AI

Atbilde no AI

Objekti atmiņā tiek glabāti heap.

Heap ir dinamiskā atmiņas zona, kurā notiek objektu izvietošana programmas izpildes laikā. Objektiem iepriekš nav zināms izmērs, un tos dzēš atkritumu savācējs.

Primārās datu tipus (veseli skaitļi, loģiskās vērtības utt.) parasti tiek glabāti stack. Stack ir statiski piešķirta atmiņas zona, kas tiek izmantota vietējo mainīgo un funkciju izsaukumu informācijas glabāšanai, un to automātiski pārvalda.

Objektu saites (t.i., adreses heapā) tiek glabātas stack vai citās heapā esošās struktūrās.

Piemērs Java:

// Primārā tipa mainīgais (int) tiek glabāts stack.
int count = 10;

// Saite uz objektu (myObject) tiek glabāta stack.
// Pašs objekts MyObject tiek izveidots heapā.
MyObject myObject = new MyObject();

// Primārais tips objekta iekšienē (id) tiek glabāts kā objekta daļa heapā.
myObject.setId(1);

// Saite uz citu objektu (anotherObject) iekš MyObject
// tiek glabāta kā daļa no myObject heapā. Pašs AnotherObject ir heapā.
myObject.setRelatedObject(new AnotherObject());

class MyObject {
    private int id; // glabājas heapā (kā daļa no MyObject)
    private AnotherObject relatedObject; // saite glabājas heapā

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

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

class AnotherObject {
    // ...
}

Tādējādi:

  • Stack: Primārās datu tipi, saites uz objektiem.
  • Heap: Paši objekti, kas satur savas laukus (ieskaitot primārās datu tipus iekš objektiem un saitēm uz citām struktūrām).