В каком месте в памяти обычно сохраняется строка, заданная с помощью кавычек в коде?

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

Короткий ответ

Что ответить на собеседовании

Строки, заданные в коде с помощью кавычек (литералы строк), в Java обычно сохраняются в специальном пуле строк — String Pool. Этот пул находится в области памяти, называемой метаспейсом (Metaspace) в современных версиях JVM (до Java 7 — в PermGen).

Подробный разбор

Ответ с пояснениями

Строки, заданные в коде с помощью кавычек (литералы строк), в Java обычно сохраняются в специальном пуле строк — String Pool. Этот пул находится в области памяти, называемой метаспейсом (Metaspace) в современных версиях JVM (до Java 7 — в PermGen).

Пул строк позволяет JVM хранить только одну копию каждой уникальной строковой константы, что экономит память и ускоряет сравнение строк по ссылке.

Пример:

String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true, обе ссылки указывают на один объект в пуле строк

Таким образом, строка, заданная в коде, обычно хранится в пуле строк в метаспейсе JVM.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее