[ 
http://issues.apache.org/jira/browse/IBATIS-171?page=comments#action_12316001 ] 

Sven Boden commented on IBATIS-171:
-----------------------------------

Kevin,

Do you have more information on your memory leak problem (IBATIS-171). Since a 
lot of people are using iBATIS and haven't reported this, chances are big it's 
in your use of iBATIS, rather than in iBATIS itself (on the other hand you 
never know).

Could it be you're keeping the object/hashmaps you create via iBATIS somehow in 
scope, so that garbage collection doesn't collect them. Or maybe the number of 
objects you want to return from your database runs in the millions.

If not, do you have more specific information on your problem. Depending on 
your profiler you will get very detailed information on files/line numbers on 
which memory leaks occur. Else this will be like finding a needle in a haystack 
and your issue will probably not be resolved.

I looked at the 2 specific  iBATIS classes you mentioned in the original "mail" 
and the use of hashmap in there is normal: semi "static" configuration data 
cleaned up in the end when the containing object gets collected.

Regards,
Sven Boden

> 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