I'm using a plug-in for Eclipse to help identify possible memory leaks however we are having trouble interpreting the results. The top, and pretty much the only, suspect is this...
7,874 instances of "macromedia.jdbc.oracle.OracleConnection", loaded by "coldfusion.bootstrap.BootstrapClassLoader @ 0xf935218" occupy 604,781,904 (71.02%) bytes. These instances are referenced from one instance of "java.util.HashMap$Entry", loaded by "<system class loader>"
Any ideas what could cause this many instances? How do we track this back to a particular cfm or cfc? Do these number seem high or is that normal? The system in question normally only has 30-60 concurrent users.
The one item I'm a little skeptical of is the use of the "coldfusion.server.ServiceFactory" and "coldfusion.sql.QueryTable" objects. We use them for 1000s of different queries, even queries within large loops. Could these be the problem? Each time we need to execute a query we do a createObject for each of these objects, when done we close the connection. I recently found a similar example where they close the recordSet first and then close the connection, we are not closing the recordSet. Any help at all is much appreciated.
It could simply be caused by the obvious: a query or queries making a large number of connections and/or consuming large resources on the Oracle database. Use Eclipse to search your application folder for queries. Can you identify any queries that could be the culprit? Is there a loop containing a method or an instance of a component that queries an Oracle database?
What's your Coldfusion version? If you're on CF8 or CF9 then the server monitor (in the Coldfusion Administrator) might tell you the process responsible for the high consumption.