Когда интернировать строку?Когда вы знаете, что у вас будет МНОЖЕСТВО строк с НИЗКОЙ кардинальностью в данном месте.
Например ... код пакетной обработки.Вы планируете обработать 100 миллионов строк, многие из созданных POJO имеют поле (скажем, поле CITY для объекта Person), которое будет только одним из нескольких возможных ответов (Нью-Йорк, Чикаго и т. Д.).Слишком много вариантов, чтобы сделать ENUM, но вам действительно не нужно создавать 45 миллионов строк с надписью New York.Вы МОЖЕТЕ использовать интернирование или какой-то вариант домашнего проката (слабая справочная карта, вероятно, лучше, чем String.intern), чтобы уменьшить объем используемой памяти.
Вы можете сэкономить место в памяти за счет возможной работы ЦП ...в некоторых местах это может стоить, но трудно сказать.GC довольно быстрый, ваши дублирующиеся строки получат GCed, как только они будут использованы.
Так что, если вы когда-нибудь попадете в место, где вы наткнетесь на стену памяти, и у вас будут Строки с низкой кардинальностью ... вы можете рассмотреть возможность интернирования.