Sobes.tech
Junior — Middle

Co je zásobník literálů řetězců a k čemu slouží při správě paměti?

sobes.tech AI

Odpověď od AI

Pool řetězců (String Pool) je speciální oblast paměti v Javě, kde jsou uloženy unikátní řetězcové objekty. Když je vytvolen literál řetězce, JVM zkontroluje, zda již takový řetězec v poolu existuje. Pokud ano, vrátí odkaz na něj; pokud ne, přidá nový.

Na co je to dobré?

  • Úspora paměti: stejné řetězce jsou uloženy jen jednou.
  • Zvýšení výkonu: porovnání řetězců přes odkaz (==) je možné pro literály z poolu.

Příklad:

String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true, obě reference ukazují na stejný objekt v poolu

String s3 = new String("hello");
System.out.println(s1 == s3); // false, s3 je nový objekt mimo pool

Tímto způsobem pool řetězců pomáhá efektivně spravovat paměť při práci s řetězci.