Neil, Thank for the quick reply.
> You need to show where the getInstance() method is called. Since you don't > call it from your start() or stop() method, I suspect you must be calling it > from another bundle or a thread. Correct, the getInstance() is called from another bundle through a registered service. > Both of these could cause the old version to be pinned in memory; meaning you > will have both the old and new versions loaded simultaneously. (How) Could this be cleaned up? As far as I know all services are unregistered and all resources cleaned up when the bundle is stopped. Regards, Erwin > > > > > On Sun, Feb 3, 2013 at 4:49 PM, Erwin Hogeweg > <[email protected]> wrote: > Hi, > > I ran into an issue after I updated a bundle. After some digging I found that > a static variable didn't have the expected value after the update. I have a > feel for what is going on, but I can't quite connect all the dots. > > So here is what's happening: > > I have an Activator with a static self. > > public Activator(...){ > private static Activator self; > ... > public void start(...){ > self = this; > ... > } > > public void stop(...){ > self = null; > ...} > > public static Activator getInstance(){ > return self; > } > > When the framework starts up, everything works as expected. When the bundle > that contains this activator is updated though, the returned value for self = > null. When I remove the null assignment in the stop() method, the > getInstance() method returns the self reference from before the bundle > update. So somehow, the framework holds on to the initial Activator class, > and keeps using this 'old' reference, even when the getInstance() call is > made from within the bundle itself. > > When I inspect the classloader inside the getInstance() method it shows the > same reference before and after the update, which is suspicious, and probably > the cause of the problem. > > I am not necessarily looking for a solution because there is a better way to > solve this problem, but I would like to understand exactly what is going > here. I don't quite get it yet. > > Any insight is highly appreciated. > > Kind Regards, > > Erwin > > > _______________________________________________ > OSGi Developer Mail List > [email protected] > https://mail.osgi.org/mailman/listinfo/osgi-dev > > _______________________________________________ > OSGi Developer Mail List > [email protected] > https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
