Строковые объекты обычно не обычно объединяются - только строки константы объединяются автоматически через интернирование.(Конечно, вы можете вызвать intern
вручную или даже создать свои собственные пулы с помощью HashSet<String>
и т. Д.) Это безопасно , потому что строки являются неизменяемыми - и имеет смысл убедиться, что любая компиляцияпостоянная времени встречается в памяти только один раз.
Вы не хотите платить цену за поиск строки в пуле стажеров (или сохранение ее навсегда) за каждую строку всистема, потому что может быть много разных строк с течением времени.Тем не менее, строковые константы, загруженные из классов, будут сохраняться до тех пор, пока эти классы работают, и, интернируя их один раз , вы можете уменьшить объем памяти, необходимый для оттока GC.