The PermGen is specific to VMs having generational garbage collection. If you use, say, JRockit, the "significance of PermGen" is non-existent because JRockit doesn't have that concept.
I think it's important to point out that PermGen are not part of the Java specs and only an implementation detail of (quite) some VMs.
The only thing you really need to know is that PermGen space is separate from the general heap and not affected by the -Xmx VM parameter. To set a new initial size on Sun JVM use the
-XX:PermSize=64m option when starting the virtual machine. To set the maximum permanent generation size use
-XX:MaxPermSize=128m option. If you set the initial size and maximum size to equal values you may be able to avoid some full garbage collections that may occur if/when the permanent generation needs to be resized.
The default values differ from among different versions but for
Sun JVMs upper limit is typically 64MB.
Some of the default values for Sun JVMs are listed below.
JDK 1.3.1_06 | Initial Size | Maximum Size |
Client JVM | 1MB | 32MB |
Server JVM | 1MB | 64MB |
JDK 1.4.1_01 | Initial Size | Maximum Size |
Client JVM | 4MB | 64MB |
Server JVM | 4MB | 64MB |
JDK 1.4.2 | Initial Size | Maximum Size |
Client JVM | 4MB | 64MB |
Server JVM | 16MB | 64MB |
JDK 1.5.0 | Initial Size | Maximum Size |
Client JVM | 8MB | 64MB |
Server JVM | 16MB | 64MB |
more info :