Sobes.tech
Назад к вопросам
Junior — Middle
66

В каких местах в памяти находятся строки в Java-программе?

Компании, где спрашивали
EAGAR

Ответ от нейросети

sobes.tech AI

В Java строки (объекты класса String) хранятся в куче (heap), так как они являются объектами. Кроме того, существует специальный пул строк (String Pool) — область памяти в куче, где хранятся уникальные неизменяемые строковые литералы для оптимизации памяти.

Когда создаётся строковый литерал, JVM проверяет пул строк: если такая строка уже есть, возвращается ссылка на неё, иначе строка добавляется в пул.

Таким образом:

  • Литералы строк — в пуле строк (в куче)
  • Созданные через new String() объекты — в куче, вне пула

Раньше пул строк располагался в PermGen (постоянном поколении), но в современных JVM он находится в области кучи.