The string pool increases the performance ( faster access time ) and reduces memory overheads by avoiding creation of duplicate strings. If you expect to be creating a same string repeatedly 'n' number of times, it is better to create it once and <code>intern()</code> it so that subsequent calls return you a reference from the pool instead of creating redundant copies on the heap.
Lets say you are writing a program which does some sort of a look up on a set of values that are loaded during initialization. These static string values that you have read into memory can all be <code>intern()</code>ed because you expect to create similar strings during the course of the program. This may not be the best example, but hopefully gives you an idea
Ajith