Назад к вопросам
СБЕР
Senior
3
Где хранятся строки (String) в Java?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Java строки (объекты класса String) хранятся в нескольких местах, в зависимости от версии JVM и контекста:
-
String Pool (пул строк) — это специальное место в памяти, где хранятся строковые литералы и строки, явно помещённые в пул с помощью
String.intern(). В современных JVM пул строк находится в куче (heap), а не в PermGen, как было в старых версиях. -
Heap (куча) — объекты
Stringсоздаются в куче, если они создаются динамически (например, черезnew String("text")).
Таким образом, строковые литералы хранятся в пуле строк, который оптимизирован для переиспользования одинаковых строк, а остальные объекты String — в куче. Это позволяет экономить память и ускорять сравнение строк.
Пример:
String s1 = "hello"; // строковый литерал, хранится в пуле
String s2 = new String("hello"); // объект в куче
String s3 = s2.intern(); // возвращает ссылку на строку из пула