[
https://issues.apache.org/jira/browse/MYFACES-3510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13235769#comment-13235769
]
Leonardo Uribe commented on MYFACES-3510:
-----------------------------------------
I have attached another patch that uses this structure:
private static Map<ClassLoader, SoftReference<Map<Class<?>, Map<String,
_PropertyDescriptorHolder>>>>
propertyDescriptorCacheMap = new WeakHashMap<ClassLoader,
SoftReference<Map<Class<?>,
Map<String, _PropertyDescriptorHolder>>>>();
The idea is use a SoftReference to prevent the direct strong reference over
propertyDescriptorCache, but use a new key over current classloader to make
possible when the application is undeployed to clean the cache.
Using yourkit profiler I was not able to see any problem with "metadata" field,
because a cleanup method is called when the application is destroyed on
AbstractFacesInitializer.
I also tried to check if the SoftReference solves the problem without the
cleanup code and it does. I also checked if the solution makes the code slower,
but the effect is minimal.
> Application components classloader memory leak
> ----------------------------------------------
>
> Key: MYFACES-3510
> URL: https://issues.apache.org/jira/browse/MYFACES-3510
> Project: MyFaces Core
> Issue Type: Bug
> Components: General
> Affects Versions: 2.1.6
> Environment: WIndows Glassfish Embedded
> Reporter: Ruben Martin Pozo
> Attachments: MYFACES-3510-1.patch, MYFACES-3510-2.patch,
> screenshot-1.jpg
>
>
> We've seen an application classloader memory leak due to the new class
> javax.faces.component._PropertyDescriptorHolder class introduced in version
> 2.1.6
> This class holds a reference to a Method of a component loaded by the
> application classloader. The memory leak shows up when the
> _PropertyDescriptorHolder is stored in the _ComponentAttributesMap class that
> is loaded by the system class loader.
> You should use a WeakReference instead of storing the direct reference to the
> Method
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira