Sobes.tech
Junior — Middle

Aké sú výhody a nevýhody používania String Pool v Jave?

sobes.tech AI

Odpoveď od AI

Pool reťazcov v Jave je špeciálne miesto v pamäti, kde sa ukladajú unikátne literály reťazcov. Keď sa vytvorí reťazec pomocou literálu, JVM skontroluje, či už taký reťazec v poole existuje, a ak áno, vráti naň odkaz; inak pridá nový.

Výhody:

  • Úspora pamäti tým, že sa uloží iba jedna kópia každého unikátneho reťazca.
  • Rýchle porovnanie reťazcov pomocou operátora == pre reťazce z poolu, pretože sa porovnávajú odkazy.

Nevýhody:

  • Reťazce vytvorené dynamicky (napríklad pomocou new String()) nie sú automaticky pridané do poolu, čo môže viesť k duplikátom.
  • Pri veľkom počte unikátnych reťazcov môže pool zaberieť značné množstvo pamäti.
  • Nie je vždy vhodné ho používať, ak sa reťazce často menia alebo sa vytvárajú dynamicky.

Príklad:

String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true, obe odkazujú na ten istý objekt v poole

String s3 = new String("hello");
System.out.println(s1 == s3); // false, rôzne objekty