Web App Redeploy Memory Leak
"sks" <[email protected]> Tue, 30 May 2006 09:17:35 +0100
| Newsgroups | gmane.text.xml.resin.user |
|---|---|
| Message-ID | <00bb01c683c1$83c63690$0200a8c0@sks1> |
Some of you may remember my on-going memory leak problem when re-deploying
my web app.
Scott said it might have been related to a JVM bug regarding primitive
arrays and JVMTI but this bug has now been fixed in 1.5.07 and still it was
happening.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5093520
I have found the source of the bug anyway and it is in Resin (or I suppose
Java's) DataSource code.
All my entity classes in my application extend from this base class
public class ConnectionBase {
static Context ic;
static DataSource ds;
static {
try {
ic = new InitialContext();
ds = (DataSource) ic.lookup("java:comp/env/jdbc/mysql");
} catch (NamingException e) {
throw new RuntimeException("Error getting database DataSource",
e);
}
}
protected static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
I call getConnection obviously to get a connection.
Now if I remove the DataSource code and instead use a java.sql.DriverManager
lookup each time it works perfectly and all objects are garbage collected. I
have not had to start Resin for 3 days on my development machine (when its
normally every hour or so).