tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Darryl Miles <>
Subject Re: Servlet inter-communication
Date Wed, 03 May 2006 17:19:19 GMT

Maybe a useful URL to help address this matter when it bites, look for 
the java code in the forum thread:

Something to put at the end of your 

Abstracting your Singletons behind something else (maybe something as 
saft as Map) which has simple lifecycle management hooks on all 
contained objects would allow during context undeploy for the shutdown 
to be called on the lifecycle.

Even I am not that zealous with caution to implement and use it for 
everyday code.

The same problem can exist for ThreadLocal data (which a common pattern 
hibernate uses), if you don't gaurd your code usage so that as you 
cleanup from the servlet/filter you null out the ThreadLocal you may 
have setup.


Peter Crowther wrote:
>> From: Leon Rosenberg [] 
>> Could you explain it a bit more? What's the difference whether I have
>> 10 instances of the same class or just one for reloading?
> In a Singleton:
> - the class holds a reference to the classloader;
> - the class holds a reference to the singleton instance;
> - the instance holds a reference to the class.
> My understanding is that classes cannot be GCed unless they have no
> instances, and classloaders are (obviously) not collected until they
> have no references from classes.  So singletons leave classes lying
> around in your JVM.  More annoyingly, classes always occupy PermGen
> space, so this junk class is now eating up precious space in PermGen -
> hence the possibility of an OOME if you reload your webapp too many
> times.  The solution is to implement appropriate listeners to make sure
> the instance is not referenced by the class before the webapp is
> unloaded.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message