Sobes.tech
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