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