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.
|