| Bug #16987 | With parameter profileSQL=true the VM runs OutOfMemory | ||
|---|---|---|---|
| Submitted: | 31 Jan 2006 22:48 | Modified: | 26 Jul 2006 20:17 |
| Reporter: | Andreas Longwitz | ||
| Status: | Closed | ||
| Category: | Connector/J | Severity: | S2 (Serious) |
| Version: | 3.12 | OS: | FreeBSD (FreeBSD 4.11) |
| Assigned to: | Target Version: | ||
[31 Jan 2006 22:48]
Andreas Longwitz
[2 Feb 2006 21:07]
Mark Matthews
Are you sure it doesn't have anything to do with the logging? Is there a reason you want to log _every_single_ query? (it doesn't make sense in a production envrionment).
[8 Feb 2006 18:57]
Andreas Longwitz
I am not sure if logging or the parameter profileSQL is the problem.
If I start the VM with
-Xrunhprof:heap=all,doe=n,file=proxy.hprof,format=b
then I see the objects that grow up after some time:
Class
Instance Count
class java.lang.String
323599
class [C
320611
class java.util.HashMap$Entry
157808
class java.util.Hashtable$Entry
135878
class java.lang.Boolean
102554
class com.mysql.jdbc.ConnectionProperties$BooleanConnectionProperty 96150
class java.lang.Integer
23076
class com.mysql.jdbc.ConnectionProperties$IntegerConnectionProperty 19230
class com.mysql.jdbc.ConnectionProperties$StringConnectionProperty 14102
class java.lang.Object
5005
class com.mysql.jdbc.ConnectionProperties$MemorySizeConnectionProperty 2564
class java.util.Properties
2564
class java.util.HashMap
2328
class java.lang.ref.Finalizer
1285
class com.mysql.jdbc.Connection
1282
class sun.util.calendar.ZoneInfo
1282
class com.mysql.jdbc.DatabaseMetaData
1282
class java.lang.Throwable
1282
class com.mysql.jdbc.log.Log4JLogger
1282
class com.mysql.jdbc.profiler.ProfileEventSink
1282
class java.util.Hashtable$KeySet
1282
class [S
1271
class java.util.ArrayList
1237
class java.util.Collections$SynchronizedSet
1074
Without the parameter profileSQL I always have 11 instances of class
com.mysql.jdbc.Connection,
it seems that every five minutes or so some new connection instances are created.
I would like to have a log of every single query in my production system for one or two
days
because I have some performance problems in my application and I do not know if the
problem arises from SQL-statements or programs running under jboss. Mysql-connector-java
sits in the middle between jboss and mysqld, so I hoped, that I can get some useful
information
with profileSQL=true. This diagnostic is better than a full mysql-log, because profileSQL
gives me comlete time information and I see this in the jboss-log together with the log of
my jboss application.
[15 Jun 2006 21:58]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/7722
