Sobes.tech
Junior — Middle

Објасните главне разлике између области меморије Stack и Heap у виртуелној машини Java

sobes.tech АИ

Одговор од АИ

Virtuelni mašinski Java deli memoriju na dva glavna područja: Stack (stos) i Heap (heap).

  • Stack (stos) — to je područje memorije gde se čuvaju lokalne promenljive metoda i informacije o pozivima funkcija (ramovi steka). Svaki thread ima svoj sopstveni stek. Pristup podacima na steku je veoma brz, memorija se automatski dodeljuje i oslobađa pri ulasku i izlasku iz metoda. Na steku se čuvaju primitivni tipovi i reference na objekte.

  • Heap (heap) — to je područje memorije gde se smeštaju objekti i nizovi kreirani dinamički pomoću operatora new. Heap je zajednički za sve threadove, a upravljanje memorijom ovde obavlja sakupljač smeća (Garbage Collector). Objekti na heap-u žive dokle god postoje reference na njih.

Ukratko:

  • Stack: brz pristup, čuva lokalne promenljive i pozive metoda, ograničene veličine.
  • Heap: čuva objekte, upravlja ga sakupljač smeća, obično je veći i dinamičan.

Primer:

public void primer() {
    int a = 10; // promenljiva a se čuva na steku
    MyObject obj = new MyObject(); // referenca obj na steku, objekat na heap-u
}