, 我们可以看到, 它就是通过不断地创建对象, 并将对象保存在 list 中防止其被垃圾回收, 因此当对象过多时, 就会使堆内存溢出。...String.intern() 方法的作用是: 若此 String 的值在常量池中已存在, 则这个方法返回常量池中对应字符串的引用; 反之将此 String 所包含的值添加到常量池中, 并返回此 String...对象的引用....注意, 上面所说的 String.intern() 方法和常量池的内存分布仅仅针对于 JDK 1.6 及之前的版本, 在 JDK 1.7 或以上的版本中, 由于去除了永久代的概念, 因此内存布局稍有不同...() 方法, 向常量池中添加了大量的字符串常量, 因而导致了常量池的内存溢出.