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_shenandoah_memory_manager() { 95 return (GCMemoryManager*) new ShenandoahMemoryManager(); 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. |