| Class | Description |
|---|---|
| AwtToolkitInitiator |
The first call to java.awt.Toolkit.getDefaultToolkit() will spawn a new thread with the
same contextClassLoader as the caller.
|
| DatatypeConverterImplInitiator |
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). |
| DocumentBuilderFactoryInitiator |
The classloader of the first thread to call DocumentBuilderFactory.newInstance().newDocumentBuilder()
seems to be unable to garbage collection.
|
| JarUrlConnectionInitiator |
The caching mechanism of JarURLConnection can prevent JAR files to be reloaded.
|
| Java2dDisposerInitiator |
Loading the class sun.java2d.Disposer will spawn a new thread with the same contextClassLoader.
|
| Java2dRenderQueueInitiator |
Using the class sun.java2d.opengl.OGLRenderQueue will spawn a new QueueFlusher thread with the same contextClassLoader.
|
| JavaxSecurityLoginConfigurationInitiator |
The class javax.security.auth.login.Configuration will keep a strong static reference to the
contextClassLoader of Thread from which the class is loaded.
|
| JdbcDriversInitiator |
Your JDBC driver will be registered in java.sql.DriverManager, which means that if
you include your JDBC driver inside your web application, there will be a reference
to your webapps classloader from system classes (see
part II).
|
| LdapPoolManagerInitiator |
The contextClassLoader of the thread loading the com.sun.jndi.ldap.LdapPoolManager class may be kept
from being garbage collected, since it will start a new thread if the system property
com.sun.jndi.ldap.connect.pool.timeout is set to a value greater than 0. |
| OracleJdbcThreadInitiator |
See https://github.com/mjiderhamn/classloader-leak-prevention/issues/8
and https://github.com/mjiderhamn/classloader-leak-prevention/issues/23
and https://github.com/mjiderhamn/classloader-leak-prevention/issues/69
and http://java.jiderhamn.se/2012/02/26/classloader-leaks-v-common-mistakes-and-known-offenders/
|
| SecurityPolicyInitiator |
javax.security.auth.Policy.getPolicy() will keep a strong static reference to
the contextClassLoader of the first calling thread.
|
| SecurityProvidersInitiator |
Custom java.security.Provider loaded in your web application and registered with
java.security.Security.addProvider() must be unregistered with java.security.Security.removeProvider()
at application shutdown, or it will cause leaks.
|
| SunAwtAppContextInitiator |
There will be a strong reference from
sun.awt.AppContext#contextClassLoader to the classloader of the calls
to sun.awt.AppContext#getAppContext(). |
| SunGCInitiator |
sun.misc.GC.requestLatency(long), which is known to be called from
javax.management.remote.rmi.RMIConnectorServer.start(), will cause the current
contextClassLoader to be unavailable for garbage collection.
|
Copyright © 2019. All rights reserved.