tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Huntrods" <huntr...@nucleus.com>
Subject Re: Would like to monitor memory use offline
Date Fri, 08 Aug 2008 00:13:21 GMT
Well, thanks to Lamda probe and then to jmap, I have found my memory 
leak. Here are the gory details in case anyone is interested. It's not 
really a Tomcat issue, but rather the boundary between Tomcat and MySQL:

I have a memory leak in my application, and jmap shows me that all my 
objects of type 'com.mysql.jdbc.Field' are not being released.

In my code I was calling resultSet.close(), but not statement.close().

Doing my homework, I found the forum postings about this and so 
corrected my code to include statement.close() as well as 
resultSet.close() after my database operations.

The problem is, even though I verified (debug statements) that the call 
is being made, the memory is STILL not being released. If I run the same 
large query 3 times in a row, my memory use triples. Even if I log off 
the session (my application) and invalidate the session, the memory is 
still locked up and cannot be freed by the JVM.

My application is java servlets, using Java 1.6.0_06-b02, Tomcat 6.0.15 
with mysql-connector-java-5.1.6-bin.jar and Mysql 5.0.51b.

So what am I missing? I was sure that adding the code to close my 
statements would fix the problem.

UPDATE:

OK. In a way, I've fixed the problem. I checked my source code, and I'm 
now issuing the correct close() statements as required, so the memory 
leak is a puzzle.

BUT - I went back through past versions of the jdbc connector because 
*** this application used to work without any problems ***. Here's what 
I found. (GOOD means no memory leaks at all - even under extended 
testing; BAD means memory leaks immediately).

GOOD:

mysql.jar (221 kb, 10/7/2003)
mysql-connector-java-3.0.16-ga-bin.jar (231 kb, 11/16/2004)
mysql-connector-java-3.0.17-ga-bin.jar  (241 kb, 6/22/2005)

BAD (memory leak):

mysql-connector-java-3.1.10-bin.jar (409 kb, 6/23/2005)
mysql-connector-java-3.1.14-bin.jar (449 kb, 10/18/2006)
... (other versions)
mysql-connector-java-5.1.6-bin.jar (687 KB, 3/5/2008)

So - does anyone know what the major change was between 3.0.17 and 
3.1.10 that would have such a dramatic effect?

Again, I realize this is not strictly a Tomcat problem (tomcat version 
is pretty much irrelevant to the problem), but many using Tomcat also 
use MySQL, so it's still "of interest".

Cheers,

-Richard

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message