Назад к вопросам
Junior — Middle
66
В каких местах в памяти находятся строки в Java-программе?
Компании, где спрашивали
EAGAR
Ответ от нейросети
sobes.tech AI
В Java строки (объекты класса String) хранятся в куче (heap), так как они являются объектами. Кроме того, существует специальный пул строк (String Pool) — область памяти в куче, где хранятся уникальные неизменяемые строковые литералы для оптимизации памяти.
Когда создаётся строковый литерал, JVM проверяет пул строк: если такая строка уже есть, возвращается ссылка на неё, иначе строка добавляется в пул.
Таким образом:
- Литералы строк — в пуле строк (в куче)
- Созданные через new String() объекты — в куче, вне пула
Раньше пул строк располагался в PermGen (постоянном поколении), но в современных JVM он находится в области кучи.