[
https://issues.apache.org/jira/browse/IBATIS-540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jeff Butler closed IBATIS-540.
------------------------------
Resolution: Fixed
Fixed in SVN.
It was a bit more difficult than the patch suggested - because SqlExecuter can
be called recursively if there are nested sub-selects in result maps. So I
changed ResultObjectFactoryUtil to implement a Stack rather than a single
instance of the configuration. This will also make the calls to the
ResultObjectFactory more accurate - because the statement id's will be correct
in all cases (even if the call is a result of a nested sub select).
I believe the issue is fixed, but if you find more issues feel free to reopen.
> 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
> Assignee: Jeff Butler
> 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
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.