Heap is divided in to three areas: young generation, old generation and perm space. Whether perm space stores dynamically generated classes using reflection (eg: JAXB classes generation(UnMarshalling) using xjc binding compiler) ?
Ask your question a different way. Besides reading links describing how the Java heap is allocated, and how allocated objects are partitioned for later garbage collection, perhaps the BEST way to determine what's going on is to LOOK at your actual application and SEE which part of the heap things are winding up. For example: