On 02/ 3/11 05:56 PM, Jason Mehrens wrote:
I understand why the previous code leaks but, why is a null value safe to use for the CCL? Is it because this code is part of the JDK (not ext classloader) or is it because no more class loading is done on that
These are internal JDK implementation threads that are used to control the lifetime of persistent HTTP connections. The threads will only trigger loading of sun private classes, they will never have to load any application classes, so it is safe to set the CCL to null.
thread? For 3rd party libs, should the CCL be set to null or set to the classloader of the thread's target and in the case of thread subclasses the loader of the subclass thread?
It depends on the libs, for example java.util.ServiceLoader.load(Class<S> service) is specified to use the current thread's context class loader. It is really up to the implemenation.
-Chris.
Thanks, Jason > From: [email protected] > To: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected] > Subject: hg: jdk7/tl/jdk: 7008595: Class loader leak caused by keepAliveTimer thread in KeepAliveCache > Date: Thu, 3 Feb 2011 10:11:03 +0000 > > Changeset: 3c86f24f7500 > Author: chegar > Date: 2011-02-03 10:10 +0000 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3c86f24f7500 > > 7008595: Class loader leak caused by keepAliveTimer thread in KeepAliveCache > Reviewed-by: michaelm > > ! src/share/classes/sun/net/www/http/KeepAliveCache.java > ! src/share/classes/sun/net/www/http/KeepAliveStream.java >
