Sobes.tech
Junior

Hol tárolódnak a tárgyak a memóriában?

sobes.tech MI

Válasz az MI-től

A memória objektumai a heap-ben tárolódnak.

A heap egy dinamikusan allokált memória terület, ahol az objektumok a program futása közben helyezkednek el. Az objektumok mérete előre nem ismert, és a szemétgyűjtő (garbage collector) távolítja el őket.

Az alapvető típusok (egész számok, logikai értékek stb.) általában a stack-ben tárolódnak. A stack egy statikusan allokált memória terület, amelyet a helyi változók és a függvényhívások információinak tárolására használnak, és automatikusan kezelik.

Az objektumokra (azaz, a heap-ben lévő címekre) mutató hivatkozások a stack-ben vagy más heap objektumokban tárolódnak.

Java példával:

// A primitív típusú változó (int) a stack-ben tárolódik.
int count = 10;

// A referencia változó (myObject) a stack-ben tárolódik.
// A MyObject objektum maga a heap-ben jön létre.
MyObject myObject = new MyObject();

// A primitív típus az objektumon belül (id) az objektum részeként a heap-ben tárolódik.
myObject.setId(1);

// Egy másik objektumra (anotherObject) mutató referencia
// a myObject része a heap-ben. Az AnotherObject maga is a heap-en van.
myObject.setRelatedObject(new AnotherObject());

class MyObject {
    private int id; // a heap-en tárolódik (MyObject részeként)
    private AnotherObject relatedObject; // referencia a heap-en

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

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

class AnotherObject {
    // ...
}

Összefoglalva:

  • Stack: Primitív típusok, objektumokra mutató referenciák.
  • Heap: Maga az objektum, amely saját mezőket tartalmaz (beleértve a primitív típusokat és más objektumokra mutató referenciákat is).