< prev index next >

src/share/vm/services/management.hpp

Print this page




  25 #ifndef SHARE_VM_SERVICES_MANAGEMENT_HPP
  26 #define SHARE_VM_SERVICES_MANAGEMENT_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "runtime/handles.hpp"
  30 #include "runtime/timer.hpp"
  31 #include "services/jmm.h"
  32 
  33 class OopClosure;
  34 class ThreadSnapshot;
  35 
  36 class Management : public AllStatic {
  37 private:
  38   static PerfVariable*      _begin_vm_creation_time;
  39   static PerfVariable*      _end_vm_creation_time;
  40   static PerfVariable*      _vm_init_done_time;
  41   static jmmOptionalSupport _optional_support;
  42   static TimeStamp          _stamp; // Timestamp since vm init done time
  43 
  44   // Management klasses
  45   static Klass*             _diagnosticCommandImpl_klass;
  46   static Klass*             _garbageCollectorExtImpl_klass;
  47   static Klass*             _garbageCollectorMXBean_klass;
  48   static Klass*             _gcInfo_klass;
  49   static Klass*             _managementFactoryHelper_klass;
  50   static Klass*             _memoryManagerMXBean_klass;
  51   static Klass*             _memoryPoolMXBean_klass;
  52   static Klass*             _memoryUsage_klass;
  53   static Klass*             _sensor_klass;
  54   static Klass*             _threadInfo_klass;
  55   static Klass* load_and_initialize_klass(Symbol* sh, TRAPS);
  56   static Klass* load_and_initialize_klass_or_null(Symbol* sh, TRAPS);
  57   static Klass* initialize_klass(Klass* k, TRAPS);
  58 
  59 public:
  60   static void init();
  61   static void initialize(TRAPS);
  62 
  63   static jlong ticks_to_ms(jlong ticks) NOT_MANAGEMENT_RETURN_(0L);
  64   static jlong timestamp() NOT_MANAGEMENT_RETURN_(0L);
  65 
  66   static void  oops_do(OopClosure* f) NOT_MANAGEMENT_RETURN;
  67   static void* get_jmm_interface(int version);
  68   static void  get_optional_support(jmmOptionalSupport* support);
  69 
  70   static void get_loaded_classes(JavaThread* cur_thread, GrowableArray<KlassHandle>* klass_handle_array);
  71 
  72   static void  record_vm_startup_time(jlong begin, jlong duration)
  73       NOT_MANAGEMENT_RETURN;
  74   static void  record_vm_init_completed() {
  75     // Initialize the timestamp to get the current time
  76     _vm_init_done_time->set_value(os::javaTimeMillis());
  77 
  78     // Update the timestamp to the vm init done time
  79     _stamp.update();
  80   }
  81 
  82   static jlong begin_vm_creation_time() {
  83     return _begin_vm_creation_time->get_value();
  84   }
  85   static jlong vm_init_done_time() {
  86     return _vm_init_done_time->get_value();
  87   }
  88 
  89   // methods to return a Klass*.
  90   static Klass* java_lang_management_ThreadInfo_klass(TRAPS);
  91   static Klass* java_lang_management_MemoryUsage_klass(TRAPS)
  92       NOT_MANAGEMENT_RETURN_(NULL);
  93   static Klass* java_lang_management_MemoryPoolMXBean_klass(TRAPS);
  94   static Klass* java_lang_management_MemoryManagerMXBean_klass(TRAPS);
  95   static Klass* java_lang_management_GarbageCollectorMXBean_klass(TRAPS);
  96   static Klass* sun_management_ManagementFactoryHelper_klass(TRAPS)
  97       NOT_MANAGEMENT_RETURN_(NULL);
  98   static Klass* sun_management_Sensor_klass(TRAPS)
  99       NOT_MANAGEMENT_RETURN_(NULL);
 100   static Klass* com_sun_management_internal_GarbageCollectorExtImpl_klass(TRAPS)
 101       NOT_MANAGEMENT_RETURN_(NULL);
 102   static Klass* com_sun_management_GcInfo_klass(TRAPS)
 103       NOT_MANAGEMENT_RETURN_(NULL);
 104   static Klass* com_sun_management_internal_DiagnosticCommandImpl_klass(TRAPS)
 105       NOT_MANAGEMENT_RETURN_(NULL);
 106 
 107   static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS);
 108   static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, objArrayHandle monitors_array, typeArrayHandle depths_array, objArrayHandle synchronizers_array, TRAPS);
 109 };
 110 
 111 class TraceVmCreationTime : public StackObj {
 112 private:
 113   TimeStamp _timer;
 114   jlong     _begin_time;
 115 
 116 public:
 117   TraceVmCreationTime() {}
 118   ~TraceVmCreationTime() {}
 119 
 120   void start()
 121   { _timer.update_to(0); _begin_time = os::javaTimeMillis(); }
 122 
 123   jlong begin_time() const {
 124     return _begin_time;


  25 #ifndef SHARE_VM_SERVICES_MANAGEMENT_HPP
  26 #define SHARE_VM_SERVICES_MANAGEMENT_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "runtime/handles.hpp"
  30 #include "runtime/timer.hpp"
  31 #include "services/jmm.h"
  32 
  33 class OopClosure;
  34 class ThreadSnapshot;
  35 
  36 class Management : public AllStatic {
  37 private:
  38   static PerfVariable*      _begin_vm_creation_time;
  39   static PerfVariable*      _end_vm_creation_time;
  40   static PerfVariable*      _vm_init_done_time;
  41   static jmmOptionalSupport _optional_support;
  42   static TimeStamp          _stamp; // Timestamp since vm init done time
  43 
  44   // Management klasses
  45   static InstanceKlass*     _diagnosticCommandImpl_klass;
  46   static InstanceKlass*     _garbageCollectorExtImpl_klass;
  47   static InstanceKlass*     _garbageCollectorMXBean_klass;
  48   static InstanceKlass*     _gcInfo_klass;
  49   static InstanceKlass*     _managementFactoryHelper_klass;
  50   static InstanceKlass*     _memoryManagerMXBean_klass;
  51   static InstanceKlass*     _memoryPoolMXBean_klass;
  52   static InstanceKlass*     _memoryUsage_klass;
  53   static InstanceKlass*     _sensor_klass;
  54   static InstanceKlass*     _threadInfo_klass;
  55   static InstanceKlass* load_and_initialize_klass(Symbol* sh, TRAPS);
  56   static InstanceKlass* load_and_initialize_klass_or_null(Symbol* sh, TRAPS);
  57   static InstanceKlass* initialize_klass(Klass* k, TRAPS);
  58 
  59 public:
  60   static void init();
  61   static void initialize(TRAPS);
  62 
  63   static jlong ticks_to_ms(jlong ticks) NOT_MANAGEMENT_RETURN_(0L);
  64   static jlong timestamp() NOT_MANAGEMENT_RETURN_(0L);
  65 
  66   static void  oops_do(OopClosure* f) NOT_MANAGEMENT_RETURN;
  67   static void* get_jmm_interface(int version);
  68   static void  get_optional_support(jmmOptionalSupport* support);
  69 
  70   static void get_loaded_classes(JavaThread* cur_thread, GrowableArray<Klass*>* klass_array);
  71 
  72   static void  record_vm_startup_time(jlong begin, jlong duration)
  73       NOT_MANAGEMENT_RETURN;
  74   static void  record_vm_init_completed() {
  75     // Initialize the timestamp to get the current time
  76     _vm_init_done_time->set_value(os::javaTimeMillis());
  77 
  78     // Update the timestamp to the vm init done time
  79     _stamp.update();
  80   }
  81 
  82   static jlong begin_vm_creation_time() {
  83     return _begin_vm_creation_time->get_value();
  84   }
  85   static jlong vm_init_done_time() {
  86     return _vm_init_done_time->get_value();
  87   }
  88 
  89   // methods to return a Klass*.
  90   static InstanceKlass* java_lang_management_ThreadInfo_klass(TRAPS);
  91   static InstanceKlass* java_lang_management_MemoryUsage_klass(TRAPS)
  92       NOT_MANAGEMENT_RETURN_(NULL);
  93   static InstanceKlass* java_lang_management_MemoryPoolMXBean_klass(TRAPS);
  94   static InstanceKlass* java_lang_management_MemoryManagerMXBean_klass(TRAPS);
  95   static InstanceKlass* java_lang_management_GarbageCollectorMXBean_klass(TRAPS);
  96   static InstanceKlass* sun_management_ManagementFactoryHelper_klass(TRAPS)
  97       NOT_MANAGEMENT_RETURN_(NULL);
  98   static InstanceKlass* sun_management_Sensor_klass(TRAPS)
  99       NOT_MANAGEMENT_RETURN_(NULL);
 100   static InstanceKlass* com_sun_management_internal_GarbageCollectorExtImpl_klass(TRAPS)
 101       NOT_MANAGEMENT_RETURN_(NULL);
 102   static InstanceKlass* com_sun_management_GcInfo_klass(TRAPS)
 103       NOT_MANAGEMENT_RETURN_(NULL);
 104   static InstanceKlass* com_sun_management_internal_DiagnosticCommandImpl_klass(TRAPS)
 105       NOT_MANAGEMENT_RETURN_(NULL);
 106 
 107   static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS);
 108   static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, objArrayHandle monitors_array, typeArrayHandle depths_array, objArrayHandle synchronizers_array, TRAPS);
 109 };
 110 
 111 class TraceVmCreationTime : public StackObj {
 112 private:
 113   TimeStamp _timer;
 114   jlong     _begin_time;
 115 
 116 public:
 117   TraceVmCreationTime() {}
 118   ~TraceVmCreationTime() {}
 119 
 120   void start()
 121   { _timer.update_to(0); _begin_time = os::javaTimeMillis(); }
 122 
 123   jlong begin_time() const {
 124     return _begin_time;
< prev index next >