Môžete vysvetliť koncept poolu reťazcov a jeho úlohu v správe pamäte v Jave?
sobes.tech AI
Odpoveď od AI
Pool reťazcov (String Pool) v Jave je špeciálne miesto v pamäti, kde sa ukladajú unikátne inštancie literálov reťazcov. To umožňuje šetriť pamäť a zrýchliť porovnávanie reťazcov.
Keď vytvoríte reťazec pomocou literálu, napríklad:
String s = "ahoj";
Java tento reťazec umiestni do poolu reťazcov. Ak neskôr vznikne iný reťazec s rovnakou hodnotou, bude odkazovať na už existujúci objekt v poolu, namiesto toho, aby vytváral nový.
Toto je dôležité pre správu pamäti, pretože reťazce sú často používané objekty a ich opakované použitie znižuje záťaž na garbage collector a znižuje spotrebu pamäti.
Ak je reťazec vytvorený pomocou konštruktora new String("ahoj"), je vytvorený na halde (heap) a nebude automaticky znovu použitý.
Na pridanie reťazca do poolu môžete zavolať metódu intern():
String s1 = new String("ahoj");
String s2 = s1.intern(); // s2 bude odkazovať na reťazec v poole