Same problem with adding rs.close() :

sQLStatement.setInt(1, 2602);
rs = sQLStatement.executeQuery();
rs.close();

sQLStatement.setInt(1, 2604);
rs = sQLStatement.executeQuery();
rs.close();

sQLStatement.setInt(1, 2605);
rs = sQLStatement.executeQuery();
rs.close();

Pierre LE MOUËLLIC


Le 06/04/2011 12:30, Mikko Tiihonen a écrit :
On 06/04/11 13:11, Pierre Le Mouëllic wrote:
With this code :

public class TestJDBC {

     private static Timer timer;

     private static Connection connDB;
     private static PreparedStatement sQLStatement;

     public static void main(String[] args) throws SQLException, ClassNotFoundException {

         connexion("jdbc:postgresql://praslin.qual.dc1:5432/G01DPM","postgres8","password");

         timer = new Timer();
         timer.schedule(new local_task(), 1000L, 1000);
     }

     static class local_task extends TimerTask {

         public void run() {
             ResultSet rs=null;
             try {
                 sQLStatement.setInt(1, 2602);
                 rs = sQLStatement.executeQuery();

Missing
rs.close();

                 sQLStatement.setInt(1, 2604);
                 rs = sQLStatement.executeQuery();

Missing
rs.close();

                 sQLStatement.setInt(1, 2605);
                 rs = sQLStatement.executeQuery();
             } catch (SQLException e) {
             }
             finally{

                 try {
                     if(rs!=null)
                         rs.close();
                 } catch (SQLException e) {
                 }
>
                 rollBack();
             }
         }
     }

     public static void connexion(String chemin, String user, String password) throws SQLException, ClassNotFoundException
     {
         Class.forName("org.postgresql.Driver");
         String url = chemin+"?user="+user+"&password="+password;

         //    Connexion
         connDB = DriverManager.getConnection(url);
         connDB.setAutoCommit(false);
         initPreparedStatement();
     }

     private static void initPreparedStatement() throws SQLException
     {
         sQLStatement = connDB.prepareStatement("select f_transite(?,'FPL','225',9,'test','','')");
     }

     public static void rollBack()
     {
>
         try
         {
             connDB.rollback();
         }
         catch(SQLException ex)
         {
         }
     }
}

In eclipse Helios profiler, Jdbc3ResultSet live instances increase (and never decrease). Same thing with
org.postgresql.core.v3.QueryExecutorImpl$ErrorTrackingResultHandler and org.postgresql.core.v3.QueryExecutorImpl$1 classes.

f_transite stored procedure make some select, insert and update. If you need more explanation, i can give it to you.

Java 6
postgresql-9.0-801.jdbc3.jar
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)

Is it a memory leak ? Or my java code is wrong ?

*Pierre LE MOUËLLIC
*
_pierre.lemouellic@xgs-france.com_ <mailto:pierre.lemouellic@xgs-france.com>
__ <mailto:pierre.lemouellic@xgs-france.com>