[
https://issues.apache.org/jira/browse/FELIX-728?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felix Meschberger updated FELIX-728:
------------------------------------
Fix Version/s: felix-1.2.2
I assume this will go into the felix-1.2.2 release. Thanks.
> Garbage Collection Corner Cases in PackageAdminImpl and StartLevelImpl
> ----------------------------------------------------------------------
>
> Key: FELIX-728
> URL: https://issues.apache.org/jira/browse/FELIX-728
> Project: Felix
> Issue Type: Improvement
> Components: Framework
> Affects Versions: felix-1.0.4, felix-1.2.0
> Reporter: Felix Meschberger
> Assignee: Richard S. Hall
> Fix For: felix-1.2.2
>
> Attachments: FELIX-728.patch
>
>
> While tracking down memory issues in our OSGi based application, I stumbled
> upon two corner case issues in the StartLevelImpl and PackageAdminImpl
> classes, which both implement the Thread.run() method to execute their
> operations asynchronously. Each of these run methods have a local variable
> which is not reset after executing the operation:
> StartLevelImpl.run() has an "Object request". This is set to the start level
> request. For example to set the start level of a bundle, the request object
> is an array of two elements containing the bundle whose start level is to be
> set and the actual startlevel. After setting the start level the
> StartLevelImpl.run method keeps a string reference to the request object,
> most notably the Bundle. If now a bundle is installed, its startlevel is set
> and then the bundle is uninstalled, the actual bundle as well as its class
> loader and classes will only be unloaded when a new request is sent to the
> StartLevelImpl class. To fix this situation, I propose to move the definition
> of the request variable inside the loop. This way, the variable is dropped
> together with any string references.
> Similarly the PackageAdminImpl.run() method has a "Bundle[] bundles"
> variable, which is also not reset. The fix is the same as for the
> StartLevelImpl.run() method, in that the variable declaration is moved inside
> the loop.
> While I did not stumble upon the PackageAdminImpl issue, I encountered the
> StartLevelImpl one.
> Will attach a patch for review.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.