3 Oct 2008 10:16
Created: (IBATIS-540) Classloader memory leak because of ThreadLocal in ResultObjectFactoryUtil
Sylvain Laurent (JIRA <ibatis-dev <at> incubator.apache.org>
2008-10-03 08:16:44 GMT
2008-10-03 08:16:44 GMT
Classloader memory leak because of ThreadLocal in ResultObjectFactoryUtil
-------------------------------------------------------------------------
Key: IBATIS-540
URL: https://issues.apache.org/jira/browse/IBATIS-540
Project: iBatis for Java
Issue Type: Bug
Components: SQL Maps
Affects Versions: 2.3.3, 2.3.4
Reporter: Sylvain Laurent
Attachments: ibatis patch for classloader memleak.txt
I'm using iBatis in a webapp with Spring and facing memory leaks upon redeployment oft he webapp.
I tracked the leaks to ibatis, where the class ResultObjectFactoryUtil has a static ThreadLocal factorySettings
The problem is that the value bound to a Thread through this ThreadLocal is never nullified, and since the
"factorySettings" is a static variable, the ThreadLocal instance is reachable as long as the
ClassLoader of the webapp is reachable. But since the FactorySettings instance is bound to the Thread
through a strong reference (see the JDK implementation of ThreadLocal in ThreadLocalMap$Entry), the
classloader is finally never collected...
The solution is to always cleanup the ThreadLocal after usage (in SqlExecurtor)
I attach a patch for iBatis 2.3.4 to this issue
. <at> Devs? What do you think?
> Classloader memory leak because of ThreadLocal in ResultObjectFactoryUtil
> -------------------------------------------------------------------------
>
> Key: IBATIS-540
> URL:
RSS Feed