
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_lang_management_MemoryPoolMXBean__
#define __java_lang_management_MemoryPoolMXBean__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>


class java::lang::management::MemoryPoolMXBean : public ::java::lang::Object
{

public:
  virtual ::java::lang::management::MemoryUsage * getCollectionUsage() = 0;
  virtual jlong getCollectionUsageThreshold() = 0;
  virtual jlong getCollectionUsageThresholdCount() = 0;
  virtual JArray< ::java::lang::String * > * getMemoryManagerNames() = 0;
  virtual ::java::lang::String * getName() = 0;
  virtual ::java::lang::management::MemoryUsage * getPeakUsage() = 0;
  virtual ::java::lang::management::MemoryType * getType() = 0;
  virtual ::java::lang::management::MemoryUsage * getUsage() = 0;
  virtual jlong getUsageThreshold() = 0;
  virtual jlong getUsageThresholdCount() = 0;
  virtual jboolean isCollectionUsageThresholdExceeded() = 0;
  virtual jboolean isCollectionUsageThresholdSupported() = 0;
  virtual jboolean isUsageThresholdExceeded() = 0;
  virtual jboolean isUsageThresholdSupported() = 0;
  virtual jboolean isValid() = 0;
  virtual void resetPeakUsage() = 0;
  virtual void setCollectionUsageThreshold(jlong) = 0;
  virtual void setUsageThreshold(jlong) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_lang_management_MemoryPoolMXBean__
