In Java 6, you can fill the PermGen and it will be cleaned up.
In Java 7, interned strings are not in PermGen, but in the heap.
In Java 8, there is no PermGen.
Literal pools, only contain constants and if you create a new String, it is not a literal so it is not in the pool in the first place.
Note: the String literal hash map doesn't resize. It is typically around 10K elements by default. As you add entries it get slower and slower as it turns into an array of linked lists.