OK, that's probably what's going on.  I know I should close Statements
and Connections and do normally but I'm fairly certain I've some out
there dangling.  I didn't know you had to close ResultSets, however. 
Glad to know that.

Thanks,
Jim.

Paul wrote:
> 
> Docs indicate that leaving a stmt or rs object open can cause memory leaks.
> Found the following in the tomcat docs somewhere, i think:
> 
> Here is an example of properly written code to use a db connection obtained
> from a connection pool:
> 
>   Connection conn = null;
>   Statement stmt = null;  // Or PreparedStatement if needed
>   ResultSet rs = null;
>   try {
>     conn = ... get connection from connection pool ...
>     stmt = conn.createStatement("select ...");
>     rs = stmt.executeQuery();
>     ... iterate through the result set ...
>     rs.close();
>     rs = null;
>     stmt.close();
>     stmt = null;
>     conn.close(); // Return to connection pool
>     conn = null;  // Make sure we don't close it twice
>   } catch (SQLException e) {
>     ... deal with errors ...
>   } finally {
>     // Always make sure result sets and statements are closed,
>     // and the connection is returned to the pool
>     if (rs != null) {
>       try { rs.close(); } catch (SQLException e) { ; }
>       rs = null;
>     }
>     if (stmt != null) {
>       try { stmt.close(); } catch (SQLException e) { ; }
>       stmt = null;
>     }
>     if (conn != null) {
>       try { conn.close(); } catch (SQLException e) { ; }
>       conn = null;
>     }
>   }
> 
> ----- Original Message -----
> From: "Jim Lynch" <[EMAIL PROTECTED]>
> To: "tomcat" <[EMAIL PROTECTED]>
> Sent: Wednesday, September 03, 2003 12:56 PM
> Subject: Memory leaks?
> 
> > I seemed to have read that java/tomcat isn't supposed to have memory
> > leaks, but something seems to be running me out of memory and I don't
> > know what.
> >
> > After a number of edit/undeploy/compile/deploy iterations I get the
> > following:
> >
> > javax.servlet.ServletException: Servlet execution threw an exception
> > at
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:269)
> > at
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:193)
> >
> > (Big snip)
> >
> >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
> ction(Http11Protocol.java:392)
> > at
> > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
> > at
> >
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
> a:619)
> > at java.lang.Thread.run(Thread.java:536)
> >
> > root cause
> >
> > java.lang.OutOfMemoryError
> >
> > I'm running tomcat 4.1.24 on Linux with Apache 1.something.  Java
> > 1.4.1_02.
> >
> > So where do I start looking for the problem?  If I forget to close
> > Statements would that cause the problem?
> >
> > Thanks,
> > Jim.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to