[ https://issues.apache.org/jira/browse/GERONIMO-2885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12512551 ]
Alexei Novikov commented on GERONIMO-2885: ------------------------------------------ Please note that calling FactoryFinder.releaseFactories() does not release ClassLoaders due to this issue: http://issues.apache.org/jira/browse/MYFACES-1558 There are two static hash maps that hold ClassLoaders instances: *_factories* and *_registeredFactoryNames*. *releaseFactories()* removes ClassLoaders entries only from *_factories* and leaves them intact in *_registeredFactoryNames*, which is enough to prevent them from being GC'ed. At the time of this comment being written, this bug was not resolved, but I patched FactoryFinder locally with the line of code marked red: public static void releaseFactories() throws FacesException { ClassLoader classLoader = getClassLoader(); _factories.remove(classLoader); {color:red} _registeredFactoryNames.remove(classLoader);{color} } ... and observed that the memory leak disappears. > JSF is leaking application ClassLoaders > --------------------------------------- > > Key: GERONIMO-2885 > URL: https://issues.apache.org/jira/browse/GERONIMO-2885 > Project: Geronimo > Issue Type: Bug > Security Level: public(Regular issues) > Components: Jetty, Tomcat > Affects Versions: 2.0-M3, 2.0-M5 > Reporter: Kevan Miller > Fix For: 2.0-M5 > > > javax.faces.FactoryFinder is holding onto application ClassLoaders. This > prevents the ClassLoaders from being GC'ed after an undeploy. > Need to call FactoryFinder.releaseFactories() during undeploy. This will > release the current ContextClassLoader. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.