Sobes.tech
Junior — Middle

Na akom mieste v pamäti Java úložiska sa nachádzajú reťazcové objekty?

sobes.tech AI

Odpoveď od AI

V Jave sú reťazcové objekty (String) uložené v špeciálnej oblasti pamäte nazývanej String Pool (bazén reťazcov), ktorá sa nachádza v Metaspace alebo v PermGen (v starších verziách JVM).

Keď sa vytvorí literál reťazca, JVM kontroluje bazén reťazcov: ak taký reťazec už existuje, vráti odkaz na existujúci objekt; inak vytvorí nový objekt a umiestni ho do bazéna. To pomáha šetriť pamäť a zrýchliť porovnávanie reťazcov.

Ak sa reťazec vytvorí pomocou konštruktora new String(), objekt sa vytvorí na halde (heap) a nebude automaticky umiestnený do String Pool, pokiaľ explicitne nevoláte metódu intern().

Príklad:

String s1 = "hello"; // reťazec v bazéne
String s2 = new String("hello"); // objekt na halde
String s3 = s2.intern(); // s3 odkazuje na reťazec v bazéne