[ https://issues.apache.org/jira/browse/FELIX-4418?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chetan Mehrotra closed FELIX-4418. ---------------------------------- Resolution: Not A Problem Framework currently marks the {{m_isDisposed}} to true for the wiring associated with the classloader. So running following query in VisualVM OQL yields the leaking classloaders {noformat} select toHtml(cl) from org.apache.felix.framework.BundleWiringImpl$BundleClassLoaderJava5 cl where cl.m_wiring.m_isDisposed==true {noformat} > Mark Bundle classloaders which should have been garbage collected > ----------------------------------------------------------------- > > Key: FELIX-4418 > URL: https://issues.apache.org/jira/browse/FELIX-4418 > Project: Felix > Issue Type: Wish > Components: Framework > Reporter: Chetan Mehrotra > Priority: Minor > > With OSgi its possible that a bundle gets refreshed/updated and thus creates > new classloaders. In ideal case the old classloaders should get garbage > collected and not be referred. However at times it happens that such > classloaders remain alive because proper cleanup on bundle decativation is > not performed. This leads to classloaders leak. > As framework knows when a BundleClassLoader becomes stale and a candidate for > GC it can mark such classloaders with some flag. This would help later in > analyzing the Heap dumps as one can query for such classloaders based on that > flag. This apprach has been used for example in Resin [1] where it marks such > classloaders with {{com.caucho.loader.ZombieClassLoaderMarker}} > We are using another approach with SLING-3359 where we have a bundle which > registers PhantomReference against the bundle classloaders and then > determines which classloader should have been garbage collected and hence are > leak suspects > [1] > http://java.jiderhamn.se/2011/12/11/classloader-leaks-i-how-to-find-classloader-leaks-with-eclipse-memory-analyser-mat/ -- This message was sent by Atlassian JIRA (v6.1.5#6160)