As designed now, customers of Hotspot have to specify a fixed size for the permanent generation, which is a part of the Java heap that holds the VM's representation of the classfiles and other types in a java program. This is called "metadata" within hotspot. If there are a lot of classes loaded, the JVM can throw OutOfMemoryError for the permanent generation when there is plenty of Java heap space and native C heap space available. The customer would then need to restart the VM with a larger MaxPermSize parameter.
One of the solutions to this problem is to use native C memory for the VM's representation of the Java program. This is currently our chosen solution. The SymbolTable and associated symbols are one type in the JVM that needs to move into native memory, from permgen. The symbols are shared among class loaders so need to be reference counted so that when unreferenced, they are freed.
This work supports bugid 6964458