From what i've read, PermGen space is where class definitions live (among other things perhaps). When you redeploy an app, if any new class definitions are created they must be loaded, but I don't think the old ones are removed. Redeploying an app many times you fill up the PermGen space because of this.
Projects that leverage runtime subclasses are especially susceptible to this, as the code may not change but at deployment time a new runtime subclass definition is created, so new definitions are loaded into PermGen.
Jason
[Message sent by forum member 'vinsonizer' (vinsonizer)]
http://forums.java.net/jive/thread.jspa?messageID=278788