[ 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.