iBatis Memory Leak Bug!
-----------------------

         Key: IBATIS-171
         URL: http://issues.apache.org/jira/browse/IBATIS-171
     Project: iBatis for Java
        Type: Bug
  Components: Build/Deployment  
    Versions: 2.1.0    
 Environment: OS:Solars10.5
Hardware:P3 128M RAM,40G HD
    Reporter: kevinliu
    Priority: Critical


        I'm a China programer.It's very happy for writing this letter to u.
        When i had used ibatis 2.0.9b,i met a trouble:my program take a lot of 
memory for work to make my solaris halt by memory leak..And then i checked my 
program and use profiler to test it,i found some ibatis class maybe has memory 
leak at the "hashMap" class.
        So i opened the ibatis source code,and found some code as 
"\com\ibatis\sqlmap\engine\builder\xml\BaseParser.java" and 
"SqlMapExecutorDelegate.java" etc which used one or one more hashmap to store 
some data,But they didn't release these hashmap by "remove" or "clear" 
statement.I think them take my program to death and eat too many memory.
        Please help us who using and loving iBatis..:-) Waiting for your 
reply.THX!
        
        This is the list that some trouble java file in iBatis 2.10 with this 
problem:
----------------------------------------
\com\ibatis\sqlmap\engine\builder\xml\BaseParser.java' :
\com\ibatis\sqlmap\engine\builder\xml\BaseParser.java(22): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\builder\xml\BaseParser.java(130):     public Map 
sqlIncludes = new HashMap();
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\cache\CacheModel.java' :
\com\ibatis\sqlmap\engine\cache\CacheModel.java(31):   private static final Map 
lockMap = new HashMap();
Found 'hashmap' 1 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\cache\fifo\FifoCacheController.java' :
\com\ibatis\sqlmap\engine\cache\fifo\FifoCacheController.java(19): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\cache\fifo\FifoCacheController.java(42):     
this.cache = Collections.synchronizedMap(new HashMap());
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\cache\lru\LruCacheController.java' :
\com\ibatis\sqlmap\engine\cache\lru\LruCacheController.java(19): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\cache\lru\LruCacheController.java(42):     this.cache 
= Collections.synchronizedMap(new HashMap());
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\cache\memory\MemoryCacheController.java' :
\com\ibatis\sqlmap\engine\cache\memory\MemoryCacheController.java(24): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\cache\memory\MemoryCacheController.java(34):   
private Map cache = Collections.synchronizedMap(new HashMap());
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\cache\memory\MemoryCacheLevel.java' :
\com\ibatis\sqlmap\engine\cache\memory\MemoryCacheLevel.java(20): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\cache\memory\MemoryCacheLevel.java(28):   private 
static Map cacheLevelMap = new HashMap();
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\exchange\MapDataExchange.java' :
\com\ibatis\sqlmap\engine\exchange\MapDataExchange.java(25): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\exchange\MapDataExchange.java(61):       map = new 
HashMap();
\com\ibatis\sqlmap\engine\exchange\MapDataExchange.java(79):       map = new 
HashMap();
Found 'hashmap' 3 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java' :
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(47): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(82):   private 
HashMap mappedStatements;
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(83):   private 
HashMap cacheModels;
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(84):   private 
HashMap resultMaps;
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(85):   private 
HashMap parameterMaps;
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(98):     
mappedStatements = new HashMap();
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(99):     cacheModels 
= new HashMap();
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(100):     resultMaps 
= new HashMap();
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(101):     
parameterMaps = new HashMap();
\com\ibatis\sqlmap\engine\impl\SqlMapExecutorDelegate.java(698):     Map map = 
new HashMap();
Found 'hashmap' 10 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\mapping\parameter\BasicParameterMap.java' :
\com\ibatis\sqlmap\engine\mapping\parameter\BasicParameterMap.java(30): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\mapping\parameter\BasicParameterMap.java(44):   
private Map parameterMappingIndex = new HashMap();
\com\ibatis\sqlmap\engine\mapping\parameter\BasicParameterMap.java(89):     Map 
props = new HashMap();
Found 'hashmap' 3 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\mapping\result\AutoResultMap.java' :
\com\ibatis\sqlmap\engine\mapping\result\AutoResultMap.java(29): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\mapping\result\AutoResultMap.java(75):       Map 
propertyMap = new HashMap();
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\mapping\result\BasicResultMap.java' :
\com\ibatis\sqlmap\engine\mapping\result\BasicResultMap.java(253):     Map 
props = new HashMap();
\com\ibatis\sqlmap\engine\mapping\result\BasicResultMap.java(329):           
uniqueKeys = new HashMap();
\com\ibatis\sqlmap\engine\mapping\result\BasicResultMap.java(505):       
parameterObject = new HashMap();
Found 'hashmap' 3 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\mapping\result\Discriminator.java' :
\com\ibatis\sqlmap\engine\mapping\result\Discriminator.java(6): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\mapping\result\Discriminator.java(37):       subMaps 
= new HashMap();
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\mapping\sql\dynamic\elements\SqlTagContext.java' :
\com\ibatis\sqlmap\engine\mapping\sql\dynamic\elements\SqlTagContext.java(21): 
import java.util.HashMap;
\com\ibatis\sqlmap\engine\mapping\sql\dynamic\elements\SqlTagContext.java(32):  
 private HashMap attributes;
\com\ibatis\sqlmap\engine\mapping\sql\dynamic\elements\SqlTagContext.java(45):  
   attributes = new HashMap();
Found 'hashmap' 3 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\mapping\sql\dynamic\elements\SqlTagHandlerFactory.java'
 :
\com\ibatis\sqlmap\engine\mapping\sql\dynamic\elements\SqlTagHandlerFactory.java(18):
 import java.util.HashMap;
\com\ibatis\sqlmap\engine\mapping\sql\dynamic\elements\SqlTagHandlerFactory.java(23):
   private static final Map HANDLER_MAP = new HashMap();
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\scope\BaseScope.java' :
\com\ibatis\sqlmap\engine\scope\BaseScope.java(18): import java.util.HashMap;
\com\ibatis\sqlmap\engine\scope\BaseScope.java(25):   private HashMap map = new 
HashMap(0);
Found 'hashmap' 3 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\scope\RequestScope.java' :
\com\ibatis\sqlmap\engine\scope\RequestScope.java(25): import java.util.HashMap;
\com\ibatis\sqlmap\engine\scope\RequestScope.java(207):       uniqueKeys = new 
HashMap();
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\type\JdbcTypeRegistry.java' :
\com\ibatis\sqlmap\engine\type\JdbcTypeRegistry.java(19): import 
java.util.HashMap;
\com\ibatis\sqlmap\engine\type\JdbcTypeRegistry.java(32):   private static 
final Map TYPE_MAP = new HashMap();
Found 'hashmap' 2 time(s).
----------------------------------------
\com\ibatis\sqlmap\engine\type\TypeHandlerFactory.java' :
\com\ibatis\sqlmap\engine\type\TypeHandlerFactory.java(28):   private final Map 
typeHandlerMap = new HashMap();
\com\ibatis\sqlmap\engine\type\TypeHandlerFactory.java(30):   private final 
HashMap typeAliases = new HashMap();
\com\ibatis\sqlmap\engine\type\TypeHandlerFactory.java(104):     
putTypeAlias("hashmap", HashMap.class.getName());
\com\ibatis\sqlmap\engine\type\TypeHandlerFactory.java(186):       map = new 
HashMap();
Found 'hashmap' 6 time(s).
Search complete, found 'hashmap' 52 time(s). (18 files.)

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

Reply via email to