[
https://issues.apache.org/jira/browse/DELTASPIKE-519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13894475#comment-13894475
]
Romain Manni-Bucau commented on DELTASPIKE-519:
-----------------------------------------------
I think we have it for BeanManagerProvider too. We spoke about having a map
store in the classloader (using Unsafe), it could do the trick and would avoid
the need to track classloaders
> ClassLoader leak in ClassDeactivationUtils
> ------------------------------------------
>
> Key: DELTASPIKE-519
> URL: https://issues.apache.org/jira/browse/DELTASPIKE-519
> Project: DeltaSpike
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.5
> Reporter: Moritz Bechler
> Priority: Critical
>
> ClassDeactivationUtils statically holds two maps (classDeactivatorMap,
> activationStatusCache) one having a classloader as key and the other a class.
> These entries are never removed resulting in leaks of the TCCL or the
> classloaders of Deactivatable classes if they do not equal the classloader
> loading deltaspike.
> Suggested fix:
> {code}
> /**
> * This Map holds the ClassLoader as first level to make it possible to
> have different configurations per
> * WebApplication in an EAR or other Multi-ClassLoader scenario.
> *
> * The Map then contains a List of {@link ClassDeactivator}s in order of
> their configured ordinal.
> */
> private static Map<ClassLoader, List<ClassDeactivator>>
> classDeactivatorMap
> = Collections.synchronizedMap(new WeakHashMap<ClassLoader,
> List<ClassDeactivator>>());
> /**
> * Cache for the result. It won't contain many classes but it might be
> accessed frequently.
> * Valid entries are only true or false. If an entry isn't available or
> null, it gets calculated.
> */
> private static Map<Class<? extends Deactivatable>, Boolean>
> activationStatusCache
> = Collections.synchronizedMap(new WeakHashMap<Class<? extends
> Deactivatable>, Boolean>());
> {code}
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)