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

#ifndef __gnu_java_lang_management_VMMemoryMXBeanImpl__
#define __gnu_java_lang_management_VMMemoryMXBeanImpl__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace lang
      {
        namespace management
        {
            class VMMemoryMXBeanImpl;
        }
      }
    }
  }
}

class gnu::java::lang::management::VMMemoryMXBeanImpl : public ::java::lang::Object
{

public: // actually package-private
  VMMemoryMXBeanImpl();
  static ::java::lang::management::MemoryUsage * getHeapMemoryUsage();
  static ::java::lang::management::MemoryUsage * getNonHeapMemoryUsage();
  static jint getObjectPendingFinalizationCount();
  static jboolean isVerbose();
  static void setVerbose(jboolean);
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_lang_management_VMMemoryMXBeanImpl__
