ThreadLocal object is never removed in ThreadEventNotifierImpl and holds the 
classloader
----------------------------------------------------------------------------------------

         Key: HIVEMIND-161
         URL: http://issues.apache.org/jira/browse/HIVEMIND-161
     Project: HiveMind
        Type: Bug
  Components: framework  
    Versions: 1.1    
 Environment: Tomcat 5.5.12, J2SE 1.6 Mustang build 62, Win XP SP2
    Reporter: Kyrill Alyoshin
    Priority: Critical


The following prevents the web application classloader from being garbage 
collected on hot redeploys of web applications. 

Please note that the issue is present on J2SE 1.5 as well. I use 1.6 only 
because it has far better support for JVMTI and as such the issue was easy to 
discover with YourKit profiler. Here it is:

1. org.apache.hivemind.service.impl.ThreadEventNotifierImpl puts 
EventListenerList ("list" variable) on its private ThreadLocal "_storage" 
variable in addThreadCleanupListener method.

2. No where in that class does the actual list gets removed from ThreadLocal.

Thus, the WebappClassLoader cannot be garbage collected because one of the 
object that it loaded (i.e. EventListenerList) is strongly referenced by live 
threads in the container, which leads to huge memory leaks on hot-redeploys.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to