Sobes.tech
Junior

Mi az a heap és a stack?

sobes.tech MI

Válasz az MI-től

Heap és Stack két memória terület, amelyeket a programok az adatok tárolására használnak.

  • Stack (verem) egy memória terület, ahol helyi változók, függvényparaméterek és visszatérési címek tárolódnak. A LIFO (utolsó be, első ki) elv szerint működik. Amikor egy függvényt hívnak, egy blokkot foglal el a verem, és a végén felszabadul. A verem mérete korlátozott, és automatikusan kezelik.

  • Heap (kupac) egy memória terület, ahol dinamikusan foglalhatók objektumok és adatok, amelyek mérete futás közben változhat. Java-ban az objektumokat a kupacban hozzák létre, és a szemétgyűjtő automatikusan felszabadítja a nem használt memóriát.

Példa:

public void pelda() {
    int a = 10; // a veremben tárolódik
    String s = new String("Szia"); // String objektum a kupacban jön létre
}

Itt az a egy helyi változó a veremben, és a String objektum a kupacban található.