Moritz Bechler created DELTASPIKE-519:
-----------------------------------------
Summary: 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)