Search code examples
javastringmemory-managementstring-interning

Is there any way to "flush" interned strings?


I'm using an external library which uses String.intern() for performance reasons. That's fine, but I'm invoking that library a lot in a given run and so I run into the dreaded

java.lang.OutOfMemoryError: PermGen space

Obviously I can use the JVM command-line -XX:MaxPermSize modifier, but that solution isn't very scalable. Instead, is there any way to periodically (between two "batches" of library calls) "flush" the interned string pool, i.e. empty the static table of strings held by the String class?


Solution

  • No. Just size permgen appropriately. It's no different to having to size the heap appropriately. Don't be afraid!