To summarize the problem: I had a memory leak when using Tomcats manager to reload my application. Analyzing the situation i found that Singeltons are never GC'd. Why? Looking deeper there seems to be a problem with old WebappClassLoaders never getting GC'd and the reason seems to be that there are references to the WebappClassLoaders that never get removed.
See here for more information: http://nyx.obidobi.net/~thomas/tomcat/index.html I have located the problem to: static Hashtables (clBindings, clNameBindings ) located in class org.apache.naming.ContextBindings. The classLoaders are added to these Hashtables by a call from lifecycleEvent in the class NamingContextListner.java =============> NamingContextListner.java, 295 if (container instanceof Context) { // Setting the context in read only mode ContextAccessController.setReadOnly(getName()); try { ContextBindings.bindClassLoader (container, container, ((Container) container).getLoader().getClassLoader()); } catch (NamingException e) { log(sm.getString("naming.bindFailed", e)); } } <============ I think that there should be a call to unbindClassLoader in the following code NamingContextListner.java, 325 } else if (event.getType() == Lifecycle.STOP_EVENT) { if (!initialized) return; // Setting the context in read/write mode ContextAccessController.setWritable(getName(), container); New line ===> ContextBindings.unbindClassLoader( container, container ); ContextAccessController.unsetSecurityToken(getName(), container); namingContext = null; envCtx = null; compCtx = null; initialized = false; } } Thomas -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>