db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-5730) DataDictionaryImpl leaks references to itself via SYSFUN_AD
Date Fri, 04 May 2012 10:10:49 GMT

     [ https://issues.apache.org/jira/browse/DERBY-5730?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Knut Anders Hatlen updated DERBY-5730:
--------------------------------------

    Attachment: d5730-1a.diff

The attached patch makes each DataDictionaryImpl instance have its own copy of the AliasDescriptors
for the SYSFUN functions. This avoids keeping references to old dictionary instances in a
shared static array, and allows gc of the instances before the DataDictionaryImpl class itself
is eligible for gc.

The patch also adds a new test to the memory suite. The test reports an OOME without the fix.

All the regression tests ran cleanly with the patch.
                
> DataDictionaryImpl leaks references to itself via SYSFUN_AD
> -----------------------------------------------------------
>
>                 Key: DERBY-5730
>                 URL: https://issues.apache.org/jira/browse/DERBY-5730
>             Project: Derby
>          Issue Type: Bug
>          Components: Services
>    Affects Versions: 10.9.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: Sysfun.java, d5730-1a.diff
>
>
> DataDictionaryImpl contains a static field called SYSFUN_AD, which holds an array of
AliasDescriptor objects for the functions in the SYSFUN schema. This array is lazily populated
as the functions are called, and it is shared between all DataDictionaryImpl instances on
the system.
> The AliasDescriptors contain references to the DataDictionaryImpl that created them,
so SYSFUN_AD may end up referencing indirectly to a number of different DataDictionaryImpl
instances, depending on where the respective SYSFUN functions are called the first time. Once
an AliasDescriptor has been added to SYSFUN_AD, it stays there until the DataDictionaryImpl
class is unloaded (in most cases, until the JVM terminates). This means the array may hold
references to DataDictionaryImpl instances that belong to database instances that have been
shut down, and that the memory held by those database instances never becomes eligible for
garbage collection.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message