Sobes.tech
Junior — Middle

Vysvětlete mechanismus fungování haldy (heap) ve virtuálním stroji Java a jak spravuje paměť pro objekty.

sobes.tech AI

Odpověď od AI

Java virtuální stroj přiděluje prostor v paměti pro objekty — to je halda (heap). Když je objekt vytvořen pomocí new, paměť pro něj je přesně v haldě.

Halda je řízena garbage collectorem (smetí sběračem), který automaticky uvolňuje paměť, když objekty přestanou být dostupné (nemají na ně odkazy).

Hlavní body fungování haldy:

  • Halda je rozdělena na generace: mladou (Young Generation), starou (Old Generation) a někdy trvalou (Permanent Generation) nebo metaspace (Metaspace).
  • Mladá generace obsahuje nedávno vytvořené objekty. Časté sběr odpadků zde je rychlý a nazývá se minor GC.
  • Objekty, které přežijí několik cyklů sběru, jsou přesunuty do staré generace.
  • Starší generace se čistí méně často, při major GC, který je nákladnější.

Tímto způsobem halda zajišťuje dynamické přidělování paměti pro objekty, a garbage collector automaticky spravuje uvolnění paměti, snižuje pravděpodobnost úniků paměti a chyb při správě paměti.