db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel John Debrunner (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2380) A statement plan holds onto resources such as its generated class even after it has been invalidated.
Date Fri, 09 Mar 2007 16:49:10 GMT

    [ https://issues.apache.org/jira/browse/DERBY-2380?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12479643
] 

Daniel John Debrunner commented on DERBY-2380:
----------------------------------------------

Yes - XCL07 can be removed, wasn't sure how to do it at the time with the recent change to
(half) an xml format.

> A statement plan holds onto resources such as its generated class even after it has been
invalidated.
> -----------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-2380
>                 URL: https://issues.apache.org/jira/browse/DERBY-2380
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.2.1, 10.1.3.1, 10.2.1.6, 10.2.2.0,
10.3.0.0
>            Reporter: Daniel John Debrunner
>         Assigned To: Daniel John Debrunner
>
> An internal plan (instance of GenericPreparedStatement) can be invalidated by other SQL
operations such as DROP TABLE or DROP INDEX.
> When this happens the references to objects that are no longer useful such as the generated
class and saved objects are held onto and thus use memory.
> If the statement is re-compiled then these objects will be handled by garbage collection.
> If the statement is not recompiled though, then these objects will remain until the plan
(GenericPreparedStatement) is garbage collected.
> The plan being garbage collected can be held up for two reasons:
>    1) The plan is in the statement cache. Note that only in some cases does it make sense
to remove an invalid plan from the statement cache, e.g. a DROP TABLE should remove any plan
that uses that table, but a DROP TRIGGER should not remove an INSERT from the cache, as it
is likely the plan will be re-used and re-compiled. This  is a separate issue given that the
memory usage can occur even if the plan is not in the cache.
>    2) The application holds onto a JDBC PreparedStatement that uses the plan.
> Given an application should not be able to affect memory usage like this then the GenericPreparedStatement.makeInvalid()
call should null out fields that hold references to objects that have become invalid.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message