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
}