A little more info. A couple of references and a summary. http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669 http://blogs.sun.com/fkieviet/entry/classloader_leaks_the_dreaded_java
A brief summary: Starting an enterprise application creates a new ClassLoader. Stopping it should cause the CL to go away. If some component fails to release a reference, then repeatedly restarting an application will eventually exhaust system memory. In this case, I suspect these are long-running threads that only ever leak one CL. However, it is still desirable to clean these references up because (1) they clutter heap dumps and make analysis of other problems more difficult and (2) if many components leaked different CLs (different code paths as the app is repeatedly restarted) memory consumption issues can still occur.
