Javaで
String s1 = "abc";
String s2 = new String("abc");
なんて記述していると
s1のインスタンスとs2のインスタンスは別物です。
そこで
String s1 = "abc";
String s2 = new String("abc").intern();
とすることで
s1のインスタンスとs2のインスタンスが同じものになります。
internが呼び出されると
JVM上で管理しているリテラル文字列と一致するかを見て、
1.存在しない場合、JVM上のリテラル文字列として保存し、参照を返却
2.存在する場合、JVM上のリテラル文字の参照を返却
するようです。
ただ、メモリ消費は抑えられますが、レスポンスが悪くなるかもしれないのであしからず。