Sobes.tech
Junior — Middle

Czym jest stos literałów łańcuchowych i do czego służy w zarządzaniu pamięcią?

sobes.tech AI

Odpowiedź od AI

Pool łańcuchów (String Pool) to specjalny obszar pamięci w Javie, w którym przechowywane są unikalne obiekty łańcuchowe. Gdy tworzony jest literał łańcuchowy, JVM sprawdza, czy taki łańcuch już istnieje w puli. Jeśli tak, zwraca odwołanie do niego; jeśli nie, dodaje nowy.

Po co to jest?

  • Oszczędność pamięci: te same łańcuchy są przechowywane tylko raz.
  • Wydajność: porównanie łańcuchów przez odwołanie (==) jest możliwe dla literałów z puli.

Przykład:

String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true, oba odwołania wskazują na ten sam obiekt w puli

String s3 = new String("hello");
System.out.println(s1 == s3); // false, s3 to nowy obiekt poza pulą

W ten sposób pula łańcuchów pomaga efektywnie zarządzać pamięcią podczas pracy z łańcuchami.