On 05/02/20 16:51, Daniel Fuchs wrote:
On 05/02/2020 15:31, Peter Levart wrote:
I think this is about allow the InitialContextFactory instance to be
GC'ed when the thread is long lived. It might not be a concern for
the LDAP or the other providers in the JDK.
-Alan
Ah, I see. You mean when the ClassLoader is long lived. So this is a
normal matter of trying to release the InitialContextFactory and
objects held by it when there is a memory pressure and not the matter
of avoiding class loader leaks? In this case it would pay only if
InitialContextFactory holds more memory than SoftReference itself...
Regards, Peter
Hi Peter,
Yes the concern is that the InitialContextFactory would be kept around
until the ClassLoader itself is GC'ed, even if the factory was used once
and not needed anymore. Could that become an issue in case the factory
is loaded e.g. by the System ClassLoader?
But it's a good point that it might not be a concern if the
InitialContextFactory instance in itself doesn't retain much memory.
InitialContextFactory itself is an extremely simple interface with one
method. I've browsed some code bases and could only find a small number
of such Factories implementations with simple logic to return a Context.
Applications will most likely delegate to the same Factory over and over
also (albeit, it's all controlled by HashTable parameters). The new
caching logic should help memory pressure here and not hinder it. I'm
not seeing a major concern with current solution as a result.
regards,
Sean.
best regards,
-- daniel