Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
1.2
-
None
-
Operating System: other
Platform: All
-
31569
Description
The JDBC specification says for ResultSet and Statement that the ResultSet and
Statement will be automatically closed when garbage collected.
This means that people often write code like this
Connection.getStatement().executeSQL("....");
However, because the DelegateConnection/DelegateStatement/DelegateResultSet
extend AbandonedTrace (and are linked into the abandoned trace mechanism) they
will not be garbage collected until the connection is closed.
This of course means that DBCP holds on to lots of memory that it shouldn't do
(I've had people complain to me of memory leaks).
Surely it's possible to make the DelegateXX hold onto something else which does
the AbandonedTrace and so when it is released it can do the implicit close and
then everything will be coool.