src/share/vm/services/management.cpp

changeset 2888
78542e2b5e35
parent 2574
02f78cfa4656
child 3329
3b688d6ff3d0
     1.1 --- a/src/share/vm/services/management.cpp	Wed May 11 13:19:53 2011 -0400
     1.2 +++ b/src/share/vm/services/management.cpp	Thu May 12 10:30:11 2011 -0700
     1.3 @@ -42,6 +42,7 @@
     1.4  #include "services/classLoadingService.hpp"
     1.5  #include "services/heapDumper.hpp"
     1.6  #include "services/lowMemoryDetector.hpp"
     1.7 +#include "services/gcNotifier.hpp"
     1.8  #include "services/management.hpp"
     1.9  #include "services/memoryManager.hpp"
    1.10  #include "services/memoryPool.hpp"
    1.11 @@ -60,6 +61,8 @@
    1.12  klassOop Management::_memoryManagerMXBean_klass = NULL;
    1.13  klassOop Management::_garbageCollectorMXBean_klass = NULL;
    1.14  klassOop Management::_managementFactory_klass = NULL;
    1.15 +klassOop Management::_garbageCollectorImpl_klass = NULL;
    1.16 +klassOop Management::_gcInfo_klass = NULL;
    1.17  
    1.18  jmmOptionalSupport Management::_optional_support = {0};
    1.19  TimeStamp Management::_stamp;
    1.20 @@ -179,6 +182,8 @@
    1.21    f->do_oop((oop*) &_memoryManagerMXBean_klass);
    1.22    f->do_oop((oop*) &_garbageCollectorMXBean_klass);
    1.23    f->do_oop((oop*) &_managementFactory_klass);
    1.24 +  f->do_oop((oop*) &_garbageCollectorImpl_klass);
    1.25 +  f->do_oop((oop*) &_gcInfo_klass);
    1.26  }
    1.27  
    1.28  klassOop Management::java_lang_management_ThreadInfo_klass(TRAPS) {
    1.29 @@ -230,6 +235,20 @@
    1.30    return _managementFactory_klass;
    1.31  }
    1.32  
    1.33 +klassOop Management::sun_management_GarbageCollectorImpl_klass(TRAPS) {
    1.34 +  if (_garbageCollectorImpl_klass == NULL) {
    1.35 +    _garbageCollectorImpl_klass = load_and_initialize_klass(vmSymbols::sun_management_GarbageCollectorImpl(), CHECK_NULL);
    1.36 +  }
    1.37 +  return _garbageCollectorImpl_klass;
    1.38 +}
    1.39 +
    1.40 +klassOop Management::com_sun_management_GcInfo_klass(TRAPS) {
    1.41 +  if (_gcInfo_klass == NULL) {
    1.42 +    _gcInfo_klass = load_and_initialize_klass(vmSymbols::com_sun_management_GcInfo(), CHECK_NULL);
    1.43 +  }
    1.44 +  return _gcInfo_klass;
    1.45 +}
    1.46 +
    1.47  static void initialize_ThreadInfo_constructor_arguments(JavaCallArguments* args, ThreadSnapshot* snapshot, TRAPS) {
    1.48    Handle snapshot_thread(THREAD, snapshot->threadObj());
    1.49  
    1.50 @@ -2056,6 +2075,13 @@
    1.51    }
    1.52  JVM_END
    1.53  
    1.54 +JVM_ENTRY(void, jmm_SetGCNotificationEnabled(JNIEnv *env, jobject obj, jboolean enabled))
    1.55 +  ResourceMark rm(THREAD);
    1.56 +  // Get the GCMemoryManager
    1.57 +  GCMemoryManager* mgr = get_gc_memory_manager_from_jobject(obj, CHECK);
    1.58 +  mgr->set_notification_enabled(enabled?true:false);
    1.59 +JVM_END
    1.60 +
    1.61  // Dump heap - Returns 0 if succeeds.
    1.62  JVM_ENTRY(jint, jmm_DumpHeap0(JNIEnv *env, jstring outputfile, jboolean live))
    1.63  #ifndef SERVICES_KERNEL
    1.64 @@ -2122,7 +2148,8 @@
    1.65    jmm_FindDeadlockedThreads,
    1.66    jmm_SetVMGlobal,
    1.67    NULL,
    1.68 -  jmm_DumpThreads
    1.69 +  jmm_DumpThreads,
    1.70 +  jmm_SetGCNotificationEnabled
    1.71  };
    1.72  
    1.73  void* Management::get_jmm_interface(int version) {

mercurial