Junior — Middle
Na jakém místě v paměti Java úložiště se nacházejí řetězcové objekty?
sobes.tech AI
Odpověď od AI
V jazyce Java jsou řetězové objekty (String) uloženy v speciální oblasti paměti nazývané String Pool (pools řetězců), která se nachází v Metaspace nebo v PermGen (u starších verzí JVM).
Když je vytvolen literál řetězce, JVM kontroluje pool řetězců: pokud takový řetězec již existuje, vrátí odkaz na existující objekt; jinak vytvoří nový objekt a umístí jej do poolu. To pomáhá šetřit paměť a urychlit porovnávání řetězců.
Pokud je řetězec vytvořen pomocí konstruktoru new String(), je objekt vytvořen na haldě (heap) a nebude automaticky umístěn do String Pool, dokud explicitně nevoláte metodu intern().
Příklad:
String s1 = "hello"; // řetězec v poolu
String s2 = new String("hello"); // objekt na haldě
String s3 = s2.intern(); // s3 odkazuje na řetězec v poolu