Mediumstring-pool
Что такое String pool и зачем он нужен?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
String pool (intern pool) — хранилище уникальных строк в heap. Литерал ищется в pool: если есть — возвращается ссылка, иначе — добавляется. Цель — экономия памяти.
String a = "hello"; // из pool
String b = "hello"; // из pool — та же ссылка
String c = new String("hello"); // новый объект + литерал в pool
a == b; // true
a == c; // false
a == c.intern(); // true — intern() возвращает каноническую ссылку- С Java 7 pool в heap (раньше в PermGen), GC чистит неиспользуемые;
intern()всех строк может привести к OutOfMemoryError;- String immutable — необходима для pool и thread-safety.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.