Re: Memory leak ? - Mailing list pgsql-jdbc
| From | Pierre Le Mouëllic |
|---|---|
| Subject | Re: Memory leak ? |
| Date | |
| Msg-id | 4D9C4789.5070406@xgs-france.com Whole thread Raw |
| In response to | Re: Memory leak ? (Mikko Tiihonen <mikko.tiihonen@nitorcreations.com>) |
| List | pgsql-jdbc |
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();
Le 06/04/2011 12:30, Mikko Tiihonen a écrit :
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();
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>
pgsql-jdbc by date: