I see many unloading of classes and my entire system will hang during that period of time..
[Unloading class sun.reflect.GeneratedMethodAccessor117]
[Unloadi
CMS is a type of GC and is divided into phases

As you can see two phases - Initial mark and Remark are stop the world events.
Source : Under Reviewing Generational GC and CMS section.
Does it happen even when the perm space is not full?
AFAIK for this you should have CMSClassUnloadingEnabled with UseConcMarkSweepGC. And FGC will be triggered when permgen area reaches it's threshold.
Also though Concurrent Sweep(phrase (4)) is not STW event if permgen area get filled up(and GC is still processing permgen area) it may led to stopping all process threads and only GC thread running till all required memory is reclaimed.