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