Grabage collection do happen in permgen (Jvm implementation based). I wrote a answer to SO question how to deliberately fill perm gen. JVM loads metadata that is classes etc in permgen area. If for some reason JVM is running low on permgen it can decide to unload classes that have no references anywhere. But when that GC runs or if run at all may very well differ from JVM to JVM implementation.
Unloading classes to create room is the last ditch effort by a jvm before it throws "Outof memory: permgen space"
Please take a look at this Question SO Link this might be helpful Basically this shows how you can fillup permgen by preventing GC of permgen area.