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]