Re: Memory leak ?

From: Pierre Le Mouëllic <pierre(dot)lemouellic(at)xgs-france(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Memory leak ?
Date: 2011-04-06 10:59:21
Message-ID: 4D9C4789.5070406@xgs-france.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Same problem with adding rs.close() :<br>
<br>
sQLStatement.setInt(1, 2602);<br>
rs = sQLStatement.executeQuery();<br>
rs.close();<br>
<br>
sQLStatement.setInt(1, 2604);<br>
rs = sQLStatement.executeQuery();<br>
rs.close();<br>
<br>
sQLStatement.setInt(1, 2605);<br>
rs = sQLStatement.executeQuery();<br>
rs.close();<br>
<br>
<div class="moz-signature"><font face="Arial" color="#000080"
size="2"><b>Pierre LE MOU&Euml;LLIC<br>
<br>
</b></font><a moz-do-not-send="true"
href="mailto:pierre(dot)lemouellic(at)xgs-france(dot)com"><font
color="blue" size="1"><u></u></font></a>
</div>
<br>
Le 06/04/2011 12:30, Mikko Tiihonen a &eacute;crit&nbsp;:
<blockquote cite="mid:4D9C40BA(dot)3080606(at)nitorcreations(dot)com"
type="cite">On 06/04/11 13:11, Pierre Le Mou&euml;llic wrote:
<br>
<blockquote type="cite">With this code :
<br>
<br>
public class TestJDBC {
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; private static Timer timer;
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; private static Connection connDB;
<br>
&nbsp;&nbsp;&nbsp;&nbsp; private static PreparedStatement sQLStatement;
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws SQLException,
ClassNotFoundException {
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
connexion("jdbc:postgresql://praslin.qual.dc1:5432/G01DPM","postgres8","password");<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timer = new Timer();
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timer.schedule(new local_task(), 1000L, 1000);
<br>
&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; static class local_task extends TimerTask {
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void run() {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSet rs=null;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sQLStatement.setInt(1, 2602);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = sQLStatement.executeQuery();
<br>
</blockquote>
<br>
Missing
<br>
rs.close();
<br>
<br>
<blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sQLStatement.setInt(1,
2604);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = sQLStatement.executeQuery();
<br>
</blockquote>
<br>
Missing
<br>
rs.close();
<br>
<br>
<blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sQLStatement.setInt(1,
2605);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = sQLStatement.executeQuery();
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (SQLException e) {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally{
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(rs!=null)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (SQLException e) {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
</blockquote>
&gt;
<br>
<blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rollBack();
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; public static void connexion(String chemin, String user,
String password) throws SQLException, ClassNotFoundException
<br>
&nbsp;&nbsp;&nbsp;&nbsp; {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("org.postgresql.Driver");
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String url =
chemin+"?user="+user+"&amp;password="+password;
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; Connexion
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connDB = DriverManager.getConnection(url);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connDB.setAutoCommit(false);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initPreparedStatement();
<br>
&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; private static void initPreparedStatement() throws
SQLException
<br>
&nbsp;&nbsp;&nbsp;&nbsp; {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sQLStatement = connDB.prepareStatement("select
f_transite(?,'FPL','225',9,'test','','')");
<br>
&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; public static void rollBack()
<br>
&nbsp;&nbsp;&nbsp;&nbsp; {
<br>
</blockquote>
&gt;
<br>
<blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connDB.rollback();
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(SQLException ex)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
&nbsp;&nbsp;&nbsp;&nbsp; }
<br>
}
<br>
<br>
In eclipse Helios profiler, Jdbc3ResultSet live instances
increase (and never decrease). Same thing with
<br>
org.postgresql.core.v3.QueryExecutorImpl$ErrorTrackingResultHandler
and org.postgresql.core.v3.QueryExecutorImpl$1 classes.
<br>
<br>
f_transite stored procedure make some select, insert and update.
If you need more explanation, i can give it to you.
<br>
<br>
Java 6
<br>
postgresql-9.0-801.jdbc3.jar
<br>
PostgreSQL 8.2.5 on powerpc-apple-darwin8.8.0, compiled by GCC
powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer,
Inc. build 5363)
<br>
<br>
Is it a memory leak ? Or my java code is wrong ?
<br>
<br>
*Pierre LE MOU&Euml;LLIC
<br>
*
<br>
_pierre(dot)lemouellic(at)xgs-france(dot)com_
<a class="moz-txt-link-rfc2396E" href="mailto:pierre(dot)lemouellic(at)xgs-france(dot)com">&lt;mailto:pierre(dot)lemouellic(at)xgs-france(dot)com&gt;</a>
<br>
__ <a class="moz-txt-link-rfc2396E" href="mailto:pierre(dot)lemouellic(at)xgs-france(dot)com">&lt;mailto:pierre(dot)lemouellic(at)xgs-france(dot)com&gt;</a>
<br>
</blockquote>
<br>
<br>
</blockquote>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 8.4 KB

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Daron Ryan 2011-04-06 11:28:03 PreparedStatement with ANY
Previous Message Guillaume Cottenceau 2011-04-06 10:52:41 Re: Memory leak ?