OK, upon looking at the Yourkit, I am showing the number of objects in memory as the following:
- com.ibatis.sqlmap.engine.impl.SqlMapClientImpl - 212 objects with a total retained size in memory of 31.38MB - com.ibatis.sqlmap.engine.scope.RequestScope - 108, 544 objects with a total retained size in memory of 16.49MB. - com.ibatis.sqlmap.engine.scope.SessionScope - 27,136 objects with a total retained size in memory of 3.03 MB. Do those numbers make sense? I only question it because with every snapshot of the memory I have taken along the way, the RequestScope/SessionScope objects keep increasing. Daniel ________________________________ From: Kalcevich, Daniel Sent: Tuesday, March 06, 2007 7:04 AM To: '[email protected]' Subject: RE: What is RequestScope used for? I found about this RequestScope through the profiler YourKit. Here is the trail that references the IBatis objects. map of com.ibatis.sqlmap.engine.scope.RequestScope --[121] of java.lang.Object[513] ---elementData of java.util.ArrayList ----list of java.util.Collections$SynchronizedRandomAccessList -----pool of com.ibatis.common.util.ThrottledPool ------requestPool of com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelega te ------delegate of com.ibatis.sqlmap.engine.impl.SqlMapClientImpl -------client of com.ibatis.dao.engine.transaction.sqlmap.SqlMapDao TransactionManager --------transactionManager of com.ibatis.dao.engine.impl.DaoContext ---------[0] of java.lang.Object[11] ----------elementData of java.util.ArrayList -----------value of java.lang.ThreadLocal$ThreadLocalMap$Entry ------------[1442] of java.lang.ThreadLocal$ThreadLocalMap$Entry[2049] -------------table of java.lang.ThreadLocal$ThreadLocalMap --------------threadLocals of java.lang.Thread [Stack Local, Thread] The reason I thought it might be contributing to a memory leak was the fact that at every snapshot I take, the number of HashMaps continues to increase without going down. Then when I look at what it is referring to, it points to the RequestScope. While looking in the trace, I saw that it was referencing the DaoContext's transaction Manager. Could the Transaction Manager be playing a part in this? My application uses Spring with SQL Maps, but a library we wrote uses the DAO Framework specifically. The Spring application does not use it. I think that is worth looking into, given what I see in the profiler. Daniel ________________________________ From: Kalcevich, Daniel Sent: Monday, March 05, 2007 11:37 AM To: '[email protected]' Subject: What is RequestScope used for? Hello, I have a Spring, Struts, SQL Map application that runs on JBoss/Tomcat. And while going through a profiler, I am seeing that there are several instances of "com.ibatis.sqlmap.engine.scope.RequestScope". What is that object used for? The reason I ask is that I am trying to track down a memory leak and am wondering if this class is possibly part of the cause? Any help is greatly appreciated. Thank you. Daniel
