mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			319 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			319 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
/* MemoryPoolMXBean.java - Interface for a memory pool bean
 | 
						|
   Copyright (C) 2006 Free Software Foundation
 | 
						|
 | 
						|
This file is part of GNU Classpath.
 | 
						|
 | 
						|
GNU Classpath is free software; you can redistribute it and/or modify
 | 
						|
it under the terms of the GNU General Public License as published by
 | 
						|
the Free Software Foundation; either version 2, or (at your option)
 | 
						|
any later version.
 | 
						|
 | 
						|
GNU Classpath is distributed in the hope that it will be useful, but
 | 
						|
WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
General Public License for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public License
 | 
						|
along with GNU Classpath; see the file COPYING.  If not, write to the
 | 
						|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
						|
02110-1301 USA.
 | 
						|
 | 
						|
Linking this library statically or dynamically with other modules is
 | 
						|
making a combined work based on this library.  Thus, the terms and
 | 
						|
conditions of the GNU General Public License cover the whole
 | 
						|
combination.
 | 
						|
 | 
						|
As a special exception, the copyright holders of this library give you
 | 
						|
permission to link this library with independent modules to produce an
 | 
						|
executable, regardless of the license terms of these independent
 | 
						|
modules, and to copy and distribute the resulting executable under
 | 
						|
terms of your choice, provided that you also meet, for each linked
 | 
						|
independent module, the terms and conditions of the license of that
 | 
						|
module.  An independent module is a module which is not derived from
 | 
						|
or based on this library.  If you modify this library, you may extend
 | 
						|
this exception to your version of the library, but you are not
 | 
						|
obligated to do so.  If you do not wish to do so, delete this
 | 
						|
exception statement from your version. */
 | 
						|
 | 
						|
package java.lang.management;
 | 
						|
 | 
						|
/**
 | 
						|
 * <p>
 | 
						|
 * Provides access to information about one of the memory
 | 
						|
 * resources or pools used by the virtual machine.  Instances
 | 
						|
 * of this bean are obtained by calling
 | 
						|
 * {@link ManagementFactory#getMemoryPoolMXBeans()}.  One
 | 
						|
 * bean is returned for each memory pool provided.
 | 
						|
 * </p>
 | 
						|
 * <p>
 | 
						|
 * The memory pool bean allows the usage of the pool to be
 | 
						|
 * monitored.  The bean can provide statistics on the current
 | 
						|
 * and peak usage of the pool, and on the threshold levels the
 | 
						|
 * pool uses.
 | 
						|
 * </p>
 | 
						|
 * <p>
 | 
						|
 * {@link getUsage()} returns an approximation of the current
 | 
						|
 * usage of the pool.  Calls to this method are expected to be
 | 
						|
 * generally quick to perform; if the call is expensive, the
 | 
						|
 * documentation of the bean should specify so.  For memory
 | 
						|
 * pool beans that represent the memory used by garbage
 | 
						|
 * collectors, the usage level includes both referenced and
 | 
						|
 * unreferenced objects.
 | 
						|
 * </p>
 | 
						|
 * <p>
 | 
						|
 * {@link getPeakUsage()} and {@link resetPeakUsage()} enable
 | 
						|
 * the retrieval of the peak usage level and setting it to the
 | 
						|
 * current usage level, respectively.  Initially, the peak usage
 | 
						|
 * level is relative to the start of the virtual machine.
 | 
						|
 * </p>
 | 
						|
 * <p>
 | 
						|
 * Memory pools may also include optional support for usage thresholds.
 | 
						|
 * The usage threshold is a particular level of memory usage.  When this
 | 
						|
 * value is crossed (the current memory usage becomes equal to or greater
 | 
						|
 * than this threshold level), the usage threshold count is increased.
 | 
						|
 * This feature is designed for monitoring the trend in memory usage.
 | 
						|
 * Support for a collection usage threshold is also provided, for
 | 
						|
 * particular garbage collectors.  This is used to monitor the amount
 | 
						|
 * of memory left uncollected after a garbage collection cycle.  There
 | 
						|
 * is no need to make special garbage collection runs to support this;
 | 
						|
 * the level following collection just needs to be monitored.
 | 
						|
 * </p>
 | 
						|
 *
 | 
						|
 * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
 | 
						|
 * @since 1.5
 | 
						|
 */
 | 
						|
public interface MemoryPoolMXBean
 | 
						|
{
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns memory usage statistics after a best-effort attempt
 | 
						|
   * has been made to remove unused objects from the pool.  This
 | 
						|
   * method is designed for use by the pools of garbage collectors,
 | 
						|
   * in order to monitor the amount of memory used after collections.
 | 
						|
   * It will return <code>null</code> if such functionality is
 | 
						|
   * unsupported by the memory pool represented by this bean.
 | 
						|
   *
 | 
						|
   * @return the memory usage of the memory pool after the most
 | 
						|
   *         recent garbage collection cycle, or <code>null</code>
 | 
						|
   *         if this operation is not supported.
 | 
						|
   */
 | 
						|
  MemoryUsage getCollectionUsage();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the collection usage threshold level in bytes.  This
 | 
						|
   * value is initially zero.
 | 
						|
   *
 | 
						|
   * @return the collection usage threshold in bytes.
 | 
						|
   * @throws UnsupportedOperationException if the collection usage
 | 
						|
   *                                       threshold is not supported.
 | 
						|
   * @see #getCollectionUsageThresholdCount()
 | 
						|
   * @see #isCollectionUsageThresholdExceeded()
 | 
						|
   * @see #isCollectionUsageThresholdSupported()
 | 
						|
   * @see #setCollectionUsageThreshold(long)
 | 
						|
   */
 | 
						|
  long getCollectionUsageThreshold();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the number of times the usage level has matched or
 | 
						|
   * exceeded the collection usage threshold.
 | 
						|
   *
 | 
						|
   * @return the number of times the usage level has matched
 | 
						|
   *         or exceeded the collection usage threshold.
 | 
						|
   * @throws UnsupportedOperationException if the collection usage
 | 
						|
   *                                       threshold is not supported.
 | 
						|
   * @see #getCollectionUsageThreshold()
 | 
						|
   * @see #isCollectionUsageThresholdExceeded()
 | 
						|
   * @see #isCollectionUsageThresholdSupported()
 | 
						|
   * @see #setCollectionUsageThreshold(long)
 | 
						|
   */
 | 
						|
  long getCollectionUsageThresholdCount();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the names of the memory managers associated with this
 | 
						|
   * pool.  Each pool has at least one memory manager.
 | 
						|
   *
 | 
						|
   * @return an array containing the name of each memory manager
 | 
						|
   *         responsible for this pool.
 | 
						|
   */
 | 
						|
  String[] getMemoryManagerNames();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the name of the memory pool.
 | 
						|
   *
 | 
						|
   * @return the memory pool name.
 | 
						|
   */
 | 
						|
  String getName();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns memory usage statistics for the peak memory usage
 | 
						|
   * of the pool.  The peak is the maximum memory usage occurring
 | 
						|
   * since the virtual machine was started or since the peak
 | 
						|
   * was reset by {@link #resetPeakUsage()}.  The return value
 | 
						|
   * may be <code>null</code> if this pool is no longer valid.
 | 
						|
   *
 | 
						|
   * @return the memory usage of the memory pool at its peak,
 | 
						|
   *         or <code>null</code> if this pool is no longer valid.
 | 
						|
   */
 | 
						|
  MemoryUsage getPeakUsage();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the type of memory used by this pool.  This can be
 | 
						|
   * either heap or non-heap memory.
 | 
						|
   *
 | 
						|
   * @return the type of this pool.
 | 
						|
   */
 | 
						|
  MemoryType getType();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns memory usage statistics for the current memory usage
 | 
						|
   * of the pool.  The return value may be <code>null</code> if
 | 
						|
   * this pool is no longer valid.  Obtaining these values is
 | 
						|
   * expected to be a relatively quick operation; if this will
 | 
						|
   * instead be an expensive operation to perform, the documentation
 | 
						|
   * of the implementating bean should specify that this is the
 | 
						|
   * case.  The values are intended to be an estimate for monitoring
 | 
						|
   * purposes.
 | 
						|
   *
 | 
						|
   * @return the memory usage of the memory pool at present,
 | 
						|
   *         or <code>null</code> if this pool is no longer valid.
 | 
						|
   */
 | 
						|
  MemoryUsage getUsage();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the usage threshold level in bytes.  This
 | 
						|
   * value is initially defined by the virtual machine.
 | 
						|
   *
 | 
						|
   * @return the usage threshold in bytes.
 | 
						|
   * @throws UnsupportedOperationException if the usage threshold
 | 
						|
   *                                       is not supported.
 | 
						|
   * @see #getUsageThresholdCount()
 | 
						|
   * @see #isUsageThresholdExceeded()
 | 
						|
   * @see #isUsageThresholdSupported()
 | 
						|
   * @see #setUsageThreshold(long)
 | 
						|
   */
 | 
						|
  long getUsageThreshold();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the number of times the usage level has matched or
 | 
						|
   * exceeded the usage threshold.
 | 
						|
   *
 | 
						|
   * @return the number of times the usage level has matched
 | 
						|
   *         or exceeded the usage threshold.
 | 
						|
   * @throws UnsupportedOperationException if the usage threshold
 | 
						|
   *                                       is not supported.
 | 
						|
   * @see #getUsageThreshold()
 | 
						|
   * @see #isUsageThresholdExceeded()
 | 
						|
   * @see #isUsageThresholdSupported()
 | 
						|
   * @see #setUsageThreshold(long)
 | 
						|
   */
 | 
						|
  long getUsageThresholdCount();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns true if the collection usage level is equal to
 | 
						|
   * or greater than the collection usage threshold.
 | 
						|
   *
 | 
						|
   * @return true if the collection usage threshold has been
 | 
						|
   *         matched or exceeded.
 | 
						|
   * @throws UnsupportedOperationException if the collection usage
 | 
						|
   *                                       threshold is not supported.
 | 
						|
   * @see #getCollectionUsageThreshold()
 | 
						|
   * @see #getCollectionUsageThresholdCount()
 | 
						|
   * @see #isCollectionUsageThresholdSupported()
 | 
						|
   * @see #setCollectionUsageThreshold(long)
 | 
						|
   */
 | 
						|
  boolean isCollectionUsageThresholdExceeded();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns true if this memory pool supports a collection usage
 | 
						|
   * level threshold.
 | 
						|
   *
 | 
						|
   * @return true if a collection usage level threshold is supported.
 | 
						|
   * @see #getCollectionUsageThreshold()
 | 
						|
   * @see #getCollectionUsageThresholdCount()
 | 
						|
   * @see #isCollectionUsageThresholdExceeded()
 | 
						|
   * @see #setCollectionUsageThreshold(long)
 | 
						|
   */
 | 
						|
  boolean isCollectionUsageThresholdSupported();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns true if the usage level is equal to
 | 
						|
   * or greater than the usage threshold.
 | 
						|
   *
 | 
						|
   * @return true if the usage threshold has been
 | 
						|
   *         matched or exceeded.
 | 
						|
   * @throws UnsupportedOperationException if the usage threshold
 | 
						|
   *                                       is not supported.
 | 
						|
   * @see #getUsageThreshold()
 | 
						|
   * @see #getUsageThresholdCount()
 | 
						|
   * @see #isUsageThresholdSupported()
 | 
						|
   * @see #setUsageThreshold(long)
 | 
						|
   */
 | 
						|
  boolean isUsageThresholdExceeded();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns true if this memory pool supports a usage level threshold.
 | 
						|
   *
 | 
						|
   * @return true if a usage level threshold is supported.
 | 
						|
   * @see #getUsageThreshold()
 | 
						|
   * @see #getUsageThresholdCount()
 | 
						|
   * @see #isUsageThresholdExceeded()
 | 
						|
   * @see #setUsageThreshold(long)
 | 
						|
   */
 | 
						|
  boolean isUsageThresholdSupported();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns true if this memory pool is still valid.  A memory pool
 | 
						|
   * becomes invalid when it is removed by the virtual machine and
 | 
						|
   * no longer used.
 | 
						|
   *
 | 
						|
   * @return true if this memory pool is valid.
 | 
						|
   */
 | 
						|
  boolean isValid();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Resets the peak memory usage level to the current memory usage
 | 
						|
   * level.
 | 
						|
   *
 | 
						|
   * @throws SecurityException if a security manager exists and
 | 
						|
   *                           denies ManagementPermission("control").
 | 
						|
   */
 | 
						|
  void resetPeakUsage();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Sets the collection threshold usage level to the given value.
 | 
						|
   * A value of zero disables the collection threshold.
 | 
						|
   *
 | 
						|
   * @param threshold the new threshold level.
 | 
						|
   * @throws IllegalArgumentException if the threshold hold level
 | 
						|
   *                                  is negative.
 | 
						|
   * @throws UnsupportedOperationException if the collection usage
 | 
						|
   *                                       threshold is not supported.
 | 
						|
   * @throws SecurityException if a security manager exists and
 | 
						|
   *                           denies ManagementPermission("control").
 | 
						|
   * @see #getCollectionUsageThreshold()
 | 
						|
   * @see #getCollectionUsageThresholdCount()
 | 
						|
   * @see #isCollectionUsageThresholdExceeded()
 | 
						|
   * @see #isCollectionUsageThresholdSupported()
 | 
						|
   */
 | 
						|
  void setCollectionUsageThreshold(long threshold);
 | 
						|
 | 
						|
  /**
 | 
						|
   * Sets the threshold usage level to the given value.  A value of
 | 
						|
   * zero disables the threshold.
 | 
						|
   *
 | 
						|
   * @param threshold the new threshold level.
 | 
						|
   * @throws IllegalArgumentException if the threshold hold level
 | 
						|
   *                                  is negative.
 | 
						|
   * @throws UnsupportedOperationException if the usage threshold
 | 
						|
   *                                       is not supported.
 | 
						|
   * @throws SecurityException if a security manager exists and
 | 
						|
   *                           denies ManagementPermission("control").
 | 
						|
   * @see #getUsageThreshold()
 | 
						|
   * @see #getUsageThresholdCount()
 | 
						|
   * @see #isUsageThresholdExceeded()
 | 
						|
   * @see #isUsageThresholdSupported()
 | 
						|
   */
 | 
						|
  void setUsageThreshold(long threshold);
 | 
						|
 | 
						|
}
 |