[ 
https://issues.apache.org/jira/browse/AXIS-2674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Veithen updated AXIS-2674:
----------------------------------

    Labels: classloader-leak  (was: )
    
> MethodCache does not clean properly, leading to classloader leaking
> -------------------------------------------------------------------
>
>                 Key: AXIS-2674
>                 URL: https://issues.apache.org/jira/browse/AXIS-2674
>             Project: Axis
>          Issue Type: Bug
>          Components: Basic Architecture
>    Affects Versions: 1.3, 1.4
>            Reporter: David Delbecq
>            Priority: Critical
>              Labels: classloader-leak
>
> In org.apache.axis.utils.cache.MethodCache, the cache is handled using 
> ThreadLocals. That mean each Thread calling MethodCache has it's own cache. 
> However, the method 
>     public void clearCache() {
>         Map map = (Map) cache.get();
>         if (map != null) {
>             map.clear();
>         }
>     }
> This only reset the cache of current Thread. Other Thread's cache are left 
> untouched. This is a problem in an environment like tomcat, where the 
> clearCache() will be called by one Thread at webapp undeploy while the caches 
> have been created for various calling Http-Thread. Those HttpThread now 
> contains via ThreadLocal implicit reference to content of cache, which 
> contains references to classes which themself contains natural reference to 
> their classloader. As such, unless you discard all Http Threads, it's 
> impossible to garbage collect content of caches and as such the webapp 
> classloader that is referenced by them is not garbage collected. This result 
> in whole webapplication not garbage collected at undeploy.
> Possible solutions to clean whole cache:
> 1)
>     public void clearCache() {
>         cache = null;
>     }
> 2)
>     public void clearCache() {
>         cache = new ThreadLocal();
>     }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
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