Sobes.tech
Назад к вопросам
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(); // возвращает ссылку на строку из пула