No it's not _that_ easy. Simply using a WeakHashMap wont work. You also have to wrap the value in a WeakReference. Otherwise the value in the Map will prevent the CL from being garbage collected. A common pitfall I've seen soooo often implemented the wrong way ;)
LieGrue, strub > On Tuesday, 23 August 2016, 17:42, Clebert Suconic > <[email protected]> wrote: > >> Not sure I get you there, commons clearly doesn't take in charge any of > that >> but some containers can force some cleanup (not the other way around) - at >> least for beansutils for instance. > > With a WeakHashmap, the cache will be removed once the classLoader is > released, right? Which is what I am trying to achieve here. The cache > per classLoader. And Removing the classLoader once the references are > > released. > > >> >> Starting with a "leaking" WeakHashMap<ClassLoader, > Provider> and see if >> consumers are complaining. >> >> It would solve your issue and I can make it working in tomee for instance > > > Why it would matter? a WeakHashMap won't cause a leak in anyways. The > ClassLoader is a weak references. Whenever Tomee released the > classLoader the element would go away from the WeakHashMap. That's how > weakHashMaps work, and that's the intent. >
