postgresql-jdbc.git / summary / log / commit / refs
commit b3a2f80c90cfa05450b5c6a88cdbda5f2dfee155
Author: Vladimir Sitnikov <sitnikov.vladimir@gmail.com>
Date: Thu Jun 04 23:39:25 2015 +0000
perf: Remove AbstractJdbc2Statement.finalize()
Removes AbstractJdbc2Statement.finalize() as server side resource
cleanup is already handled byQueryExecutorImpl#processDeadParsedQueries.
With this change, if many prepared statements are created, but not
closed, and no further activity occurs on the connection, then the
server side resources for those connections will never be closed. The
scenario is considered to be unlikely and in any event is incorrect
usage of the driver.
org/postgresql/jdbc2/AbstractJdbc2Statement.java | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/org/postgresql/jdbc2/AbstractJdbc2Statement.java
index b6b253fc..0289f069 100644
--- a/org/postgresql/jdbc2/AbstractJdbc2Statement.java
+++ b/org/postgresql/jdbc2/AbstractJdbc2Statement.java
@@ -22,6 +22,7 @@ import java.util.TimeZone;
import java.util.Calendar;
import org.postgresql.Driver;
+import org.postgresql.core.v3.QueryExecutorImpl;
import org.postgresql.largeobject.*;
import org.postgresql.core.*;
import org.postgresql.core.types.*;
@@ -863,22 +864,9 @@ public abstract class AbstractJdbc2Statement implements BaseStatement
}
/**
- * This finalizer ensures that statements that have allocated server-side
- * resources free them when they become unreferenced.
+ * Statement finalizer is not required as "statement" at the database side
+ * is managed by a {@link java.lang.ref.PhantomReference} in {@link QueryExecutorImpl#processDeadParsedQueries()}.
*/
- protected void finalize() throws Throwable {
- try
- {
- close();
- }
- catch (SQLException e)
- {
- }
- finally
- {
- super.finalize();
- }
- }
/*
* Filter the SQL string of Java SQL Escape clauses.
[parent: c9214d31b7ab]