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

Chris Rankin updated FELIX-6591:
--------------------------------
    Description: 
Our project loads and unloads a lot of bundles over time, and we have noticed 
that the JVM quickly spends the majority of its time collecting its garbage.

We have identified the Framework Security extension as one source of this 
problem. Specifically, the suspiciously large number of {{Conditions}} and 
{{Permissions}} objects in every heap dump.

The {{Permissions}} objects are _definitely_ being leaking because 
{{Permission.Entry.hashCode()}} should use {{Arrays.hashCode(entry)}} instead 
of {{entry.hashCode()}} when {{entry}} is an array.

I have also reimplemented {{Conditions}} to listen for 
{{BundleEvent.UNINSTALLED}} instead of relying on multiple 
{{{}WeakHashMap{}}}s. This is consistent with a TODO comment for this class, 
and allows the {{Conditions}} obejcts to be deleted _immediately_ instead of 
waiting for the garbage collector to realise that they are no longer referenced.

  was:
Our project loads and unloads a lot of bundles over time, and we have noticed 
that the JVM quickly spends the majority of its time collecting its garbage.

We have identified the Framework Security extension as one source of this 
problem. Specifically, the suspiciously large number of `Conditions` and 
`Permissions` objects in every heap dump.

The `Permissions` objects are _definitely_ being leaking because 
`Permission.Entry.hashCode()` should use `Arrays.hashCode(entry)` instead of 
`entry.hashCode()` when `entry` is an array.

I have also reimplemented `Conditions` to listen for `BundleEvent.UNINSTALLED` 
instead of relying on multiple `WeakHashMap`s. This is consistent with a TODO 
comment for this class, and allows the `Conditions` obejcts to be deleted 
_immediately_ instead of waiting for the garbage collector to realise that they 
are no longer referenced.


> Memory leak in Felix Framework Security extension
> -------------------------------------------------
>
>                 Key: FELIX-6591
>                 URL: https://issues.apache.org/jira/browse/FELIX-6591
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework Security
>            Reporter: Chris Rankin
>            Priority: Major
>              Labels: MemoryLeak, memory-leak
>
> Our project loads and unloads a lot of bundles over time, and we have noticed 
> that the JVM quickly spends the majority of its time collecting its garbage.
> We have identified the Framework Security extension as one source of this 
> problem. Specifically, the suspiciously large number of {{Conditions}} and 
> {{Permissions}} objects in every heap dump.
> The {{Permissions}} objects are _definitely_ being leaking because 
> {{Permission.Entry.hashCode()}} should use {{Arrays.hashCode(entry)}} instead 
> of {{entry.hashCode()}} when {{entry}} is an array.
> I have also reimplemented {{Conditions}} to listen for 
> {{BundleEvent.UNINSTALLED}} instead of relying on multiple 
> {{{}WeakHashMap{}}}s. This is consistent with a TODO comment for this class, 
> and allows the {{Conditions}} obejcts to be deleted _immediately_ instead of 
> waiting for the garbage collector to realise that they are no longer 
> referenced.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to