I'm seeing a lot of permgen consumption whenever someone logs in. Upon login of any user, permgen usage goes up by two megabytes.
Did you check if N users login, permgen usage increases about 2*N megabytes (for quite large N)?
I suspect the cause of such permgen leak (if any) is the use of String.intern() in code base of GateIn 3.1
I ran jmap -permstat in the test environment, and it tells me that only 7MB of permgen space is devoted to interned strings, which seems fine. After looking through the rest of the report, though, I'm a little confused.
If I'm interpreting this report correctly, there are ~1500 instances of groovy/lang/GroovyClassLoader$InnerLoader in permgen, taking up almost 500MB. That seems impossible, since VisualVM tells me that only 400MB of permgen is being used in total at the moment.
Groovy is used to render UI templates in EPP, though I'm still researching to determine how this many instances of GroovyClassLoader got into permgen. All of them are dead, and using the CMS JVM options for class unloading doesn't affect permgen usage in this case.