A question here : why do you put "rs.close(), rs = null, stmt.close(), stmt
= null etc" twice, in both "try" and "finally" statements ?
Since the "finally" statement is called whenever an exception is thrown or
not, you don't need to close rs, stmt and conn in the "try" statement
first...
Am I wrong here ?

Thanks
Alain

-----Message d'origine-----
De : Paul [mailto:[EMAIL PROTECTED] 
Envoyé : mercredi, 3. septembre 2003 21:28
À : Tomcat Users List
Objet : Re: Memory leaks?


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]


**********************************************************************
 This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.
**********************************************************************


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

Reply via email to