blob: 59b7be5a421bfb7d40e8cc672e8f0db35713a281 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (16) -->
<title>MemoryPoolMXBean (OpenJ9 JDK 16)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: module: jdk.management, package: com.ibm.lang.management, interface: MemoryPoolMXBean">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="com.ibm.lang.management.MemoryPoolMXBean interface">
<meta name="keywords" content="getPreCollectionUsage()">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar.top">
<div class="skip-nav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><div style="margin-top: 9px;"><strong>OpenJ9 JDK 16</strong></div></div>
<ul id="navbar.top.firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/MemoryPoolMXBean.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-files/index-1.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip.navbar.top">
<!-- -->
</span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../module-summary.html">jdk.management</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.ibm.lang.management</a></div>
<h1 title="Interface MemoryPoolMXBean" class="title">Interface MemoryPoolMXBean</h1>
</div>
<section class="description">
<dl class="notes">
<dt>All Superinterfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html" title="class or interface in java.lang.management" class="external-link" target="_blank">MemoryPoolMXBean</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/PlatformManagedObject.html" title="class or interface in java.lang.management" class="external-link" target="_blank">PlatformManagedObject</a></code></dd>
</dl>
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="internal/MemoryPoolMXBeanImpl.html" title="class in com.ibm.lang.management.internal">MemoryPoolMXBeanImpl</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">MemoryPoolMXBean</span><span class="extends-implements">
extends <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html" title="class or interface in java.lang.management" class="external-link" target="_blank">MemoryPoolMXBean</a></span></div>
<div class="block">The OpenJ9 interface for managing and monitoring the virtual machine's memory pools.
The following list describes 4 common behavior changes for <a href="MemoryPoolMXBean.html" title="interface in com.ibm.lang.management"><code>MemoryPoolMXBean</code></a>.
You can revert to the earlier implementation of <a href="MemoryPoolMXBean.html" title="interface in com.ibm.lang.management"><code>MemoryPoolMXBean</code></a> by setting the
<b>-XX:+HeapManagementMXBeanCompatibility</b> Java command line option.
<h2>1. More detailed heap memory pools can be obtained by calling <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/ManagementFactory.html#getMemoryPoolMXBeans()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>ManagementFactory.getMemoryPoolMXBeans()</code></a></h2>
The following names are reported for heap memory pools, listed by garbage collection policy:
<br><br>
For <b>-Xgcpolicy:gencon</b>
<ul>
<li><b>nursery-allocate</b>
<li><b>nursery-survivor</b>
<li><b>tenured-LOA</b>
<li><b>tenured-SOA</b>
</ul>
<br>
For <b>-Xgcpolicy:optthruput</b> and <b>-Xgcpolicy:optavgpause</b>
<ul>
<li><b>tenured-LOA</b>
<li><b>tenured-SOA</b>
</ul>
<br>
For <b>-Xgcpolicy:balanced</b>
<ul>
<li><b>balanced-reserved</b>
<li><b>balanced-eden</b>
<li><b>balanced-survivor</b>
<li><b>balanced-old</b>
</ul>
<br>
For <b>-Xgcpolicy:metronome</b>
<ul>
<li><b>JavaHeap</b>
</ul>
<br><p>
If you set the <b>-XX:+HeapManagementMXBeanCompatibility</b> option to turn on compatibility with earlier versions of the VM,
information about heap memory pools is reported in the older format.
<br>
The following name is reported for the heap memory pool for all garbage collection policies in the old format:
<ul>
<li><b>Java heap</b>
</ul>
<h2>2. Memory Usage</h2>
Memory usage for each heap memory pool can be retrieved by using <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getUsage()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.getUsage()</code></a> or <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getCollectionUsage()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.getCollectionUsage()</code></a>.
In some cases the total sum of memory usage of all heap memory pools is more than the maximum heap size.
This irregularity can be caused if data for each pool is collected between garbage collection cycles,
where objects have been moved or reclaimed.
If you want to collect memory usage data that is synchronized across the memory pools, use the
<a href="../../../sun/management/GarbageCollectionNotificationInfo.html" title="class in com.sun.management"><code>GarbageCollectionNotificationInfo</code></a> or <a href="https://docs.oracle.com/en/java/javase/16/docs/api/jdk.management/com/sun/management/GarbageCollectorMXBean.html#getLastGcInfo()" title="class or interface in com.sun.management" class="external-link" target="_blank"><code>GarbageCollectorMXBean.getLastGcInfo()</code></a> extensions.
<h2>3. Usage Threshold (<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getUsageThreshold()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.getUsageThreshold()</code></a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#setUsageThreshold(long)" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.setUsageThreshold(long)</code></a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isUsageThresholdExceeded()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.isUsageThresholdExceeded()</code></a>)</h2>
The usage threshold attribute is designed for monitoring the increasing trend of memory usage and incurs only a low overhead.
This attribute is not appropriate for some memory pools.
Use the <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isUsageThresholdSupported()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.isUsageThresholdSupported()</code></a> method to determine
if this functionality is supported by the memory pool to avoid an unexpected <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang" class="external-link" target="_blank"><code>UnsupportedOperationException</code></a>.
<br>
The following names are reported for heap memory pools that support the usage threshold attribute:
<ul>
<li><b>JavaHeap</b>
<li><b>tenured</b>
<li><b>tenured-LOA</b>
<li><b>tenured-SOA</b>
<li><b>balanced-survivor</b>
<li><b>balanced-old</b>
</ul>
<h2>4. Collection Usage Threshold (<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getCollectionUsageThreshold()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.getCollectionUsageThreshold()</code></a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#setCollectionUsageThreshold(long)" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.setCollectionUsageThreshold(long)</code></a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isCollectionUsageThresholdExceeded()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.isCollectionUsageThresholdExceeded()</code></a>)</h2>
The collection usage threshold is a manageable attribute that is applicable only to some garbage-collected memory pools.
This attribute reports the amount of memory taken up by objects that are still in use after a garbage collection cycle.
Use the <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isCollectionUsageThresholdSupported()" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryPoolMXBean.isCollectionUsageThresholdSupported()</code></a> method to determine
if this functionality is supported by the memory pool to avoid an unexpected <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/UnsupportedOperationException.html" title="class or interface in java.lang" class="external-link" target="_blank"><code>UnsupportedOperationException</code></a>.
<br>
The following names are reported for heap memory pools that support the collection usage threshold attribute:
<ul>
<li><b>JavaHeap</b>
<li><b>tenured</b>
<li><b>tenured-LOA</b>
<li><b>tenured-SOA</b>
<li><b>nursery-allocate</b>
<li><b>balanced-eden</b>
<li><b>balanced-survivor</b>
<li><b>balanced-old</b>
</ul>
<br>
<br></div>
<dl class="notes">
<dt>Since:</dt>
<dd>1.5</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method.summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryUsage.html" title="class or interface in java.lang.management" class="external-link" target="_blank">MemoryUsage</a></code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table method-summary-table-tab3"><code><span class="member-name-link"><a href="#getPreCollectionUsage()">getPreCollectionUsage</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table method-summary-table-tab3">
<div class="block">If supported by the virtual machine, returns a <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryUsage.html" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryUsage</code></a> which
encapsulates this memory pool's memory usage <em>before</em> the most
recent run of the garbage collector.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods.inherited.from.class.java.lang.management.MemoryPoolMXBean">Methods declared in interface&nbsp;java.lang.management.<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html" title="class or interface in java.lang.management" class="external-link" target="_blank">MemoryPoolMXBean</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getCollectionUsage()" title="class or interface in java.lang.management" class="external-link" target="_blank">getCollectionUsage</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getCollectionUsageThreshold()" title="class or interface in java.lang.management" class="external-link" target="_blank">getCollectionUsageThreshold</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getCollectionUsageThresholdCount()" title="class or interface in java.lang.management" class="external-link" target="_blank">getCollectionUsageThresholdCount</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getMemoryManagerNames()" title="class or interface in java.lang.management" class="external-link" target="_blank">getMemoryManagerNames</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()" title="class or interface in java.lang.management" class="external-link" target="_blank">getName</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getPeakUsage()" title="class or interface in java.lang.management" class="external-link" target="_blank">getPeakUsage</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getType()" title="class or interface in java.lang.management" class="external-link" target="_blank">getType</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getUsage()" title="class or interface in java.lang.management" class="external-link" target="_blank">getUsage</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getUsageThreshold()" title="class or interface in java.lang.management" class="external-link" target="_blank">getUsageThreshold</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getUsageThresholdCount()" title="class or interface in java.lang.management" class="external-link" target="_blank">getUsageThresholdCount</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isCollectionUsageThresholdExceeded()" title="class or interface in java.lang.management" class="external-link" target="_blank">isCollectionUsageThresholdExceeded</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isCollectionUsageThresholdSupported()" title="class or interface in java.lang.management" class="external-link" target="_blank">isCollectionUsageThresholdSupported</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isUsageThresholdExceeded()" title="class or interface in java.lang.management" class="external-link" target="_blank">isUsageThresholdExceeded</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isUsageThresholdSupported()" title="class or interface in java.lang.management" class="external-link" target="_blank">isUsageThresholdSupported</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#isValid()" title="class or interface in java.lang.management" class="external-link" target="_blank">isValid</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#resetPeakUsage()" title="class or interface in java.lang.management" class="external-link" target="_blank">resetPeakUsage</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#setCollectionUsageThreshold(long)" title="class or interface in java.lang.management" class="external-link" target="_blank">setCollectionUsageThreshold</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#setUsageThreshold(long)" title="class or interface in java.lang.management" class="external-link" target="_blank">setUsageThreshold</a></code></div>
<div class="inherited-list">
<h3 id="methods.inherited.from.class.java.lang.management.PlatformManagedObject">Methods declared in interface&nbsp;java.lang.management.<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/PlatformManagedObject.html" title="class or interface in java.lang.management" class="external-link" target="_blank">PlatformManagedObject</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/PlatformManagedObject.html#getObjectName()" title="class or interface in java.lang.management" class="external-link" target="_blank">getObjectName</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method.detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getPreCollectionUsage()">
<h3>getPreCollectionUsage</h3>
<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryUsage.html" title="class or interface in java.lang.management" class="external-link" target="_blank">MemoryUsage</a></span>&nbsp;<span class="element-name">getPreCollectionUsage</span>()</div>
<div class="block">If supported by the virtual machine, returns a <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryUsage.html" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryUsage</code></a> which
encapsulates this memory pool's memory usage <em>before</em> the most
recent run of the garbage collector. No garbage collection will be
actually occur as a result of this method getting called.
<p>
The method will return a <code>null</code> if the virtual machine does
not support this type of functionality.
</p>
MBeanServer access:<br>
The return value will be mapped to a
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/javax/management/openmbean/CompositeData.html" title="class or interface in javax.management.openmbean" class="external-link" target="_blank"><code>CompositeData</code></a> with attributes as
specified in <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryUsage.html" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryUsage</code></a>.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.management/java/lang/management/MemoryUsage.html" title="class or interface in java.lang.management" class="external-link" target="_blank"><code>MemoryUsage</code></a> containing the usage details for the memory
pool just before the most recent collection occurred.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small><a href="https://www.eclipse.org/openj9/" target="_blank">Eclipse OpenJ9 website.</a><br> To raise a bug report or suggest an improvement create an <a href="https://github.com/eclipse-openj9/openj9/issues" target="_blank">Eclipse Openj9 issue.</a><br> Copyright &copy; 1998, 2021, IBM Corp. and others.</small></p>
</footer>
</div>
</div>
</body>
</html>