Sobes.tech
Junior — Middle

Vysvetlite hlavné rozdiely medzi oblasťou pamäte Stack a Heap vo virtuálnej stroj Java

sobes.tech AI

Odpoveď od AI

Virtuálna Java Virtual Machine rozdeľuje pamäť na dve hlavné oblasti: zásobník (Stack) a halda (Heap).

  • Stack (zásobník) — je oblasť pamäte, kde sú uložené lokálne premenné metód a informácie o volaniach funkcií (zásobníkové rámce). Každý vlákno má vlastný zásobník. Prístup k údajom na zásobníku je veľmi rýchly, pamäť je automaticky prideľovaná a uvoľňovaná pri vstupe a výstupe z metód. Na zásobníku sa ukladajú primitívne typy a referencie na objekty.

  • Heap (halda) — je oblasť pamäte, kde sú umiestnené objekty a polia, ktoré sú dynamicky vytvárané pomocou operátora new. Halda je zdieľaná všetkými vláknami a správa pamäte je zabezpečená garbage collectorom (zberačom odpadkov). Objekty na halde žijú tak dlho, ako existujú referencie na ne.

Stručne:

  • Stack: rýchly prístup, ukladá lokálne premenné a volania metód, je obmedzený veľkosťou.
  • Heap: ukladá objekty, je spravovaný garbage collectorom, zvyčajne väčší a dynamický.

Príklad:

public void priklad() {
    int a = 10; // premenná a je uložená na zásobníku
    MyObject obj = new MyObject(); // referencia obj na zásobníku, objekt na halde
}