1 of 1 people found this helpful
JSP pages are compiled on-demand and that classes are loaded in the PermGen space. I don't know how Axis works but it might also use dynamic class compiling.
So if you not very often change the pages the PermGen is more or less filled with the same classes and do not need a GC very often.
Of all of the setting you mentioned, only CMSClassUnloadingEnabled has anything to do with the permgen. And classes are unloaded from the permgen only if they are no longer needed. Usually, once a class is loaded it is always needed and is never freed.
The "-Dsun.rmi.dgc.client.gcInterval=1800000 -Dsun.rmi.dgc.server.gcInterval=1800000" setting simply causes a full collection every 30 minutes, whether you need it or not. Usually, you will have run several full collections within 30 minutes anyway, so forcing another doesn't really make any sense. I recommend either setting these to very high values (such as a month or a year), or setting -XX:+DisableExplicitGC, which will turn force collects off entirely.
The "normal" size for the permgen is how ever big you need ti to be. If you monitor the permgen size, as you did using JConsole, you will get an idea of how big it needs to be. Set it for that size plus a little extra (20-25% more). Based on the size you see (about 400MB), the maxpermsize you specified of 512MB seems acceptable.