You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hivemind.apache.org by "James Carman (JIRA)" <hi...@jakarta.apache.org> on 2005/12/06 03:43:08 UTC

[jira] Commented: (HIVEMIND-161) ThreadLocal object is never removed in ThreadEventNotifierImpl and holds the classloader

    [ http://issues.apache.org/jira/browse/HIVEMIND-161?page=comments#action_12359375 ] 

James Carman commented on HIVEMIND-161:
---------------------------------------

I was wondering what was causing these memory leaks.  I was playing around with Tapestry 4.0 over the weekend and after a few redeploys in IntelliJ IDEA, it would run out of memory!  So, do you think just clearing the thread-local variable in fireThreadCleanup() should do it?

> 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
>  Attachments: hivemind-threadlocals.pdf
>
> 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: hivemind-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-dev-help@jakarta.apache.org