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.