diff --git a/org/postgresql/jdbc2/AbstractJdbc2Statement.java b/org/postgresql/jdbc2/AbstractJdbc2Statement.java
index <HASH>..<HASH> 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.
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.