From 49740c5fb99094b3942d7b8588f545907fd17074 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 28 Dec 2000 23:56:46 +0000 Subject: [PATCH] Attached are patches for two fixes to reduce memory usage by the JDBC drivers. The first fix fixes the PreparedStatement object to not allocate unnecessary objects when converting native types to Stings. The old code used the following format: (new Integer(x)).toString() whereas this can more efficiently be occompilshed by: Integer.toString(x); avoiding the unnecessary object creation. The second fix is to release some resources on the close() of a ResultSet. Currently the close() method on ResultSet is a noop. The purpose of the close() method is to release resources when the ResultSet is no longer needed. The fix is to free the tuples cached by the ResultSet when it is closed (by clearing out the Vector object that stores the tuples). This is important for my application, as I have a cache of Statement objects that I reuse. Since the Statement object maintains a reference to the ResultSet and the ResultSet kept references to the old tuples, my cache was holding on to a lot of memory. Barry Lind --- .../jdbc/org/postgresql/jdbc1/PreparedStatement.java | 12 ++++++------ .../jdbc/org/postgresql/jdbc1/ResultSet.java | 3 ++- .../jdbc/org/postgresql/jdbc2/PreparedStatement.java | 12 ++++++------ .../jdbc/org/postgresql/jdbc2/ResultSet.java | 3 ++- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java index 237a58486d..51cb64d5a2 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java @@ -164,7 +164,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setByte(int parameterIndex, byte x) throws SQLException { - set(parameterIndex, (new Integer(x)).toString()); + set(parameterIndex, Integer.toString(x)); } /** @@ -177,7 +177,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setShort(int parameterIndex, short x) throws SQLException { - set(parameterIndex, (new Integer(x)).toString()); + set(parameterIndex, Integer.toString(x)); } /** @@ -190,7 +190,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setInt(int parameterIndex, int x) throws SQLException { - set(parameterIndex, (new Integer(x)).toString()); + set(parameterIndex, Integer.toString(x)); } /** @@ -203,7 +203,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setLong(int parameterIndex, long x) throws SQLException { - set(parameterIndex, (new Long(x)).toString()); + set(parameterIndex, Long.toString(x)); } /** @@ -216,7 +216,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setFloat(int parameterIndex, float x) throws SQLException { - set(parameterIndex, (new Float(x)).toString()); + set(parameterIndex, Float.toString(x)); } /** @@ -229,7 +229,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setDouble(int parameterIndex, double x) throws SQLException { - set(parameterIndex, (new Double(x)).toString()); + set(parameterIndex, Double.toString(x)); } /** diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java index e9fc53d96a..3010ed59a3 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java @@ -127,7 +127,8 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu */ public void close() throws SQLException { - // No-op + //release resources held (memory for tuples) + rows.setSize(0); } /** diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java index a74d3c57b3..1e8ec1138e 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java @@ -164,7 +164,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setByte(int parameterIndex, byte x) throws SQLException { - set(parameterIndex, (new Integer(x)).toString()); + set(parameterIndex, Integer.toString(x)); } /** @@ -177,7 +177,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setShort(int parameterIndex, short x) throws SQLException { - set(parameterIndex, (new Integer(x)).toString()); + set(parameterIndex, Integer.toString(x)); } /** @@ -190,7 +190,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setInt(int parameterIndex, int x) throws SQLException { - set(parameterIndex, (new Integer(x)).toString()); + set(parameterIndex, Integer.toString(x)); } /** @@ -203,7 +203,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setLong(int parameterIndex, long x) throws SQLException { - set(parameterIndex, (new Long(x)).toString()); + set(parameterIndex, Long.toString(x)); } /** @@ -216,7 +216,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setFloat(int parameterIndex, float x) throws SQLException { - set(parameterIndex, (new Float(x)).toString()); + set(parameterIndex, Float.toString(x)); } /** @@ -229,7 +229,7 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta */ public void setDouble(int parameterIndex, double x) throws SQLException { - set(parameterIndex, (new Double(x)).toString()); + set(parameterIndex, Double.toString(x)); } /** diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java index b84537fb45..f1f333d6d2 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java @@ -128,7 +128,8 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu */ public void close() throws SQLException { - // No-op + //release resources held (memory for tuples) + rows.setSize(0); } /** -- 2.40.0