PreparedStatementsをキャッシュする社内のDB接続プールを使用しています。接続がプールに戻されるとき、キャッシュされたステートメントは閉じられません。これらはmySQLドライバーでOutOfMemoryExceptionsを作成します。そのため、PreparedStatementキャッシュをHashMap <String、SoftReference<PreparedStatement>>に格納することを計画しています。
しかし、これでは、GCされる前にステートメントを閉じることができません。
ReferenceQueueを使用しても役に立たないと思いますが、finalizeメソッドはお勧めできません。