I think the classes are not loaded using a class loader, but read in as input streams and the bytecode parsed with BCEL. I saw that this fills up the regular heap, not perm. I might be wrong.
Originally Posted by cigaly
Your guess is right (thanks for pointing me the cause of the problem) - while performing scanning, tomcat is saving detailed class information into its internal cache. In later processing it only needs names of superclass and implemented classes for each class in cache.
I've reported that as bug (technically, this is not a bug, but a very lousy programming) and now I am waiting for response.