ClassLoaderPreMortemCleanUp, using the class name as nameClassLoaderPreMortemCleanUpPreClassLoaderInitiator, using the class name as nameLogFactory.release(getCurrentClassLoader());
Use reflection in case ACL is not present.javax.el.BeanELResolver, which leaks prior to version 2.2.4.Introspector cachejavax.validation.ValidationClassLoaderLeakPreventorFactory with ClassLoader.getSystemClassLoader() as the
ClassLoaderLeakPreventorFactory.leakSafeClassLoader and default PreClassLoaderInitiators and ClassLoaderPreMortemCleanUps.ClassLoaderLeakPreventorFactory with supplied ClassLoader as the
ClassLoaderLeakPreventorFactory.leakSafeClassLoader and default PreClassLoaderInitiators and ClassLoaderPreMortemCleanUps.ClassLoader available
for garbage collection.ClassLoaderLeakPreventor.classLoader
ready for garbage collection.ClassLoaderPreMortemCleanUps with all the actions to invoke to make a
ClassLoader ready for Garbage Collection.ClassLoaderPreMortemCleanUpsPreClassLoaderInitiatorsPreClassLoaderInitiators and ClassLoaderPreMortemCleanUpsRuntimeException without any stack trace, in order to avoid any references back to this classAccessControlContext that is used in ClassLoaderLeakPreventor.doInLeakSafeClassLoader(Runnable).DatatypeConverterImpl in the JAXB Reference Implementation shipped with JDK 1.6+ will
keep a static reference (DatatypeConverterImpl) to a concrete subclass of
DatatypeFactory, that is resolved when the class is loaded (which I believe happens if you
have custom bindings that reference the static methods in DatatypeConverter).Authenticator (in case current one is loaded by protected ClassLoader).Thread.contextClassLoader.Throwable as an error messageSystem.gc() this method guarantees that garbage collection has been performed before
returning.ClassLoaderPreMortemCleanUp for further configuring.AuthenticatorClassLoader to be used when invoking the PreClassLoaderInitiators.System.out/System.errPreClassLoaderInitiator for further configuring.ClassLoaderLeakPreventor.classLoader, or a child thereofClassLoaderLeakPreventor.classLoaderClassLoaderLeakPreventor.classLoaderThread ties do the protected classloader, either by being a custom Thread class, having a
custom ThreadGroup or having the protected classloader as its Thread.contextClassLoader?Levels loaded within the protected class loader.JceSecurityLogger interface, that uses java.util.logging.com.sun.jndi.ldap.connect.pool.timeout is set to a value greater than 0.ClassLoader to be used when invoking the PreClassLoaderInitiators.Logger that will be passed on to the different PreClassLoaderInitiators and
ClassLoaderPreMortemCleanUpsPreClassLoaderInitiators and ClassLoaderPreMortemCleanUps when order
is important.StopThreadsCleanUp, since in there the Keep-Alive-Timer may be stopped.StopThreadsCleanUp, since new ThreadLocals may be added when threads are
shutting down.PreClassLoaderInitiators/ClassLoaderPreMortemCleanUps, needs to be prior to this element in the list.NotificationListeners/NotificationFilters/handbacks loaded by the
protected class loaderClassLoaderLeakPreventor used to prevent the provided Thread.contextClassLoader of the
Thread.currentThread() from leaking.ClassLoaderLeakPreventor used to prevent the provided ClassLoader from leakingPreClassLoaderInitiators with all the actions to invoke in the
ClassLoaderLeakPreventorFactory.leakSafeClassLoader.ThreadLocal.remove()ed leak as a warning.ProxySelector is loaded by protected ClassLoader it needs to be unsetClassLoaderPreMortemCleanUp for further configuringDomainCombiner (loaded in the web app) from the AccessControlContext
and any parents or privilegedContext thereof.PreClassLoaderInitiator for further configuringAuthenticator loaded in protected ClassLoader.DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument().normalizeDocument(); or
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
DOMImplementationLS implementation = (DOMImplementationLS)document.getImplementation();
implementation.createLSSerializer().writeToString(document);
may trigger leaks caused by the static fields com.sun.org.apache.xerces.internal.dom.DOMNormalizer#abort and
com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl#abort respectively keeping stacktraces/backtraces
that may include references to classes loaded by our web application.ResourceBundleClassLoaderPreMortemCleanUpsPreClassLoaderInitiators in the ClassLoaderLeakPreventor.leakSafeClassLoaderSAXParser attribute/property being loaded by protected class loader
and cached in com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory#parserPool.ClassLoader, or otherwise referencing it,
and either warn or stop those threads depending on settings.StopThreadsCleanUp.stopThreads = true and StopThreadsCleanUp.stopTimerThreads = truesun.awt.AppContext#contextClassLoader to the classloader of the calls
to sun.awt.AppContext#getAppContext().ThreadGroups that are loaded by the protected classloaderThreadGroupContext.beanInfoCaches in ThreadGroupContext.contexts
since they may contain beans/properties loaded in the protected classloader.ThreadLocals for which ThreadLocal.remove() has not been called, in case either the
ThreadLocal is a custom one (subclassed in the protected ClassLoader), or the value is loaded by (or is)
the protected ClassLoader.NotificationListeners from subclass of NotificationBroadcasterSupport, if listener,
filter or handback is loaded by the protected ClassLoader.Throwable as a warning messageClassLoaderPreMortemCleanUp that does not clear ThreadLocals to remove the leak, but only logs a
warningsun.security.ssl.X509TrustManagerImpl keeps a list set of trusted certs, which may include
sun.security.x509.UnparseableExtension that in turn may include an Exception with a backtrace
with references to the classloader that we want to protectCopyright © 2019. All rights reserved.