< prev index next >

src/share/vm/services/memoryManager.cpp

Print this page




  74 GCMemoryManager* MemoryManager::get_cms_memory_manager() {
  75   return (GCMemoryManager*) new CMSMemoryManager();
  76 }
  77 
  78 GCMemoryManager* MemoryManager::get_psScavenge_memory_manager() {
  79   return (GCMemoryManager*) new PSScavengeMemoryManager();
  80 }
  81 
  82 GCMemoryManager* MemoryManager::get_psMarkSweep_memory_manager() {
  83   return (GCMemoryManager*) new PSMarkSweepMemoryManager();
  84 }
  85 
  86 GCMemoryManager* MemoryManager::get_g1YoungGen_memory_manager() {
  87   return (GCMemoryManager*) new G1YoungGenMemoryManager();
  88 }
  89 
  90 GCMemoryManager* MemoryManager::get_g1OldGen_memory_manager() {
  91   return (GCMemoryManager*) new G1OldGenMemoryManager();
  92 }
  93 




  94 instanceOop MemoryManager::get_memory_manager_instance(TRAPS) {
  95   // Must do an acquire so as to force ordering of subsequent
  96   // loads from anything _memory_mgr_obj points to or implies.
  97   instanceOop mgr_obj = (instanceOop)OrderAccess::load_ptr_acquire(&_memory_mgr_obj);
  98   if (mgr_obj == NULL) {
  99     // It's ok for more than one thread to execute the code up to the locked region.
 100     // Extra manager instances will just be gc'ed.
 101     Klass* k = Management::sun_management_ManagementFactoryHelper_klass(CHECK_0);
 102 
 103     Handle mgr_name = java_lang_String::create_from_str(name(), CHECK_0);
 104 
 105     JavaValue result(T_OBJECT);
 106     JavaCallArguments args;
 107     args.push_oop(mgr_name);    // Argument 1
 108 
 109     Symbol* method_name = NULL;
 110     Symbol* signature = NULL;
 111     if (is_gc_memory_manager()) {
 112       Klass* extKlass = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK_0);
 113       // com.sun.management.GarbageCollectorMXBean is in jdk.management module which may not be present.




  74 GCMemoryManager* MemoryManager::get_cms_memory_manager() {
  75   return (GCMemoryManager*) new CMSMemoryManager();
  76 }
  77 
  78 GCMemoryManager* MemoryManager::get_psScavenge_memory_manager() {
  79   return (GCMemoryManager*) new PSScavengeMemoryManager();
  80 }
  81 
  82 GCMemoryManager* MemoryManager::get_psMarkSweep_memory_manager() {
  83   return (GCMemoryManager*) new PSMarkSweepMemoryManager();
  84 }
  85 
  86 GCMemoryManager* MemoryManager::get_g1YoungGen_memory_manager() {
  87   return (GCMemoryManager*) new G1YoungGenMemoryManager();
  88 }
  89 
  90 GCMemoryManager* MemoryManager::get_g1OldGen_memory_manager() {
  91   return (GCMemoryManager*) new G1OldGenMemoryManager();
  92 }
  93 
  94 GCMemoryManager* MemoryManager::get_epsilon_memory_manager() {
  95   return (GCMemoryManager*) new EpsilonMemoryManager();
  96 }
  97 
  98 instanceOop MemoryManager::get_memory_manager_instance(TRAPS) {
  99   // Must do an acquire so as to force ordering of subsequent
 100   // loads from anything _memory_mgr_obj points to or implies.
 101   instanceOop mgr_obj = (instanceOop)OrderAccess::load_ptr_acquire(&_memory_mgr_obj);
 102   if (mgr_obj == NULL) {
 103     // It's ok for more than one thread to execute the code up to the locked region.
 104     // Extra manager instances will just be gc'ed.
 105     Klass* k = Management::sun_management_ManagementFactoryHelper_klass(CHECK_0);
 106 
 107     Handle mgr_name = java_lang_String::create_from_str(name(), CHECK_0);
 108 
 109     JavaValue result(T_OBJECT);
 110     JavaCallArguments args;
 111     args.push_oop(mgr_name);    // Argument 1
 112 
 113     Symbol* method_name = NULL;
 114     Symbol* signature = NULL;
 115     if (is_gc_memory_manager()) {
 116       Klass* extKlass = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK_0);
 117       // com.sun.management.GarbageCollectorMXBean is in jdk.management module which may not be present.


< prev index next >