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