junior
Что такое пул строк?
Пул строк – это набор строк, хранящийся в Heap.
- Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
- Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
- Когда для создания строки используются
", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё; - При использовании оператора
newсоздаётся новый объектString. Затем при помощи методаintern()эту строку можно поместить в пул или же получить из пула ссылку на другой объектStringс таким же значением; - Пул строк является примером паттерна «Приспособленец» (Flyweight).
Начиная с Java 9, в рамках оптимизации Compact Strings (JEP 254) внутреннее представление строк было изменено: вместо массива char[] (где каждый символ занимает 2 байта) используется массив byte[] с дополнительным полем coder, которое указывает кодировку (Latin-1 или UTF-16). Если строка содержит только символы Latin-1 (а это подавляющее большинство строк в типичных приложениях), она хранится в 1 байт на символ, что существенно экономит память. Эта оптимизация применяется и к строкам в пуле.