blob: ec606457120e5f5a23760847eab4823561d0bc44 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.9) on Fri Nov 20 15:16:02 CST 2020 -->
<title>org.eclipse.jetty.util.preventers (Jetty :: Project 9.4.35.v20201120 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2020-11-20">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="org.eclipse.jetty.util.preventers (Jetty :: Project 9.4.35.v20201120 API)";
}
}
catch(err) {
}
//-->
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.eclipse.jetty.util.preventers</h1>
</div>
<div class="contentContainer">
<section role="region"><a id="package.description">
<!-- -->
</a>
<div class="block">Jetty Util : Common Memory Leak Prevention Tooling</div>
</section>
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="AbstractLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">AbstractLeakPreventer</a></th>
<td class="colLast">
<div class="block">AbstractLeakPreventer
Abstract base class for code that seeks to avoid pinning of webapp classloaders by using the jetty classloader to
proactively call the code that pins them (generally pinned as static data members, or as static
data members that are daemon threads (which use the context classloader)).</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="AppContextLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">AppContextLeakPreventer</a></th>
<td class="colLast">
<div class="block">AppContextLeakPreventer
Cause the classloader that is pinned by AppContext.getAppContext() to be
a container or system classloader, not a webapp classloader.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="AWTLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">AWTLeakPreventer</a></th>
<td class="colLast">
<div class="block">AWTLeakPreventer
See https://issues.jboss.org/browse/AS7-3733
The java.awt.Toolkit class has a static field that is the default toolkit.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DOMLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">DOMLeakPreventer</a></th>
<td class="colLast">
<div class="block">DOMLeakPreventer
See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6916498
Prevent the RuntimeException that is a static member of AbstractDOMParser
from pinning a webapp classloader by causing it to be set here by a non-webapp classloader.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DriverManagerLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">DriverManagerLeakPreventer</a></th>
<td class="colLast">
<div class="block">DriverManagerLeakPreventer
Cause DriverManager.getCallerClassLoader() to be called, which will pin the classloader.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="GCThreadLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">GCThreadLeakPreventer</a></th>
<td class="colLast">
<div class="block">GCThreadLeakPreventer
Prevents a call to sun.misc.GC.requestLatency pinning a webapp classloader
by calling it with a non-webapp classloader.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="Java2DLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">Java2DLeakPreventer</a></th>
<td class="colLast">
<div class="block">Java2DLeakPreventer
Prevent pinning of webapp classloader by pre-loading sun.java2d.Disposer class
before webapp classloaders are created.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="LDAPLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">LDAPLeakPreventer</a></th>
<td class="colLast">
<div class="block">LDAPLeakPreventer
If com.sun.jndi.LdapPoolManager class is loaded and the system property
com.sun.jndi.ldap.connect.pool.timeout is set to a nonzero value, a daemon
thread is started which can pin a webapp classloader if it is the first to
load the LdapPoolManager.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="LoginConfigurationLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">LoginConfigurationLeakPreventer</a></th>
<td class="colLast">
<div class="block">LoginConfigurationLeakPreventer
The javax.security.auth.login.Configuration class keeps a static reference to the
thread context classloader.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="SecurityProviderLeakPreventer.html" title="class in org.eclipse.jetty.util.preventers">SecurityProviderLeakPreventer</a></th>
<td class="colLast">
<div class="block">SecurityProviderLeakPreventer
Some security providers, such as sun.security.pkcs11.SunPKCS11 start a deamon thread,
which will use the thread context classloader.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2020 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>