42 (void)const_cast<instanceOop&>(_memory_mgr_obj = instanceOop(NULL));
43 }
44
45 void MemoryManager::add_pool(MemoryPool* pool) {
46 assert(_num_pools < MemoryManager::max_num_pools, "_num_pools exceeds the max");
47 if (_num_pools < MemoryManager::max_num_pools) {
48 _pools[_num_pools] = pool;
49 _num_pools++;
50 }
51 pool->add_manager(this);
52 }
53
54 MemoryManager* MemoryManager::get_code_cache_memory_manager() {
55 return (MemoryManager*) new CodeCacheMemoryManager();
56 }
57
58 MemoryManager* MemoryManager::get_metaspace_memory_manager() {
59 return (MemoryManager*) new MetaspaceMemoryManager();
60 }
61
62 GCMemoryManager* MemoryManager::get_copy_memory_manager() {
63 return (GCMemoryManager*) new CopyMemoryManager();
64 }
65
66 GCMemoryManager* MemoryManager::get_msc_memory_manager() {
67 return (GCMemoryManager*) new MSCMemoryManager();
68 }
69
70 GCMemoryManager* MemoryManager::get_parnew_memory_manager() {
71 return (GCMemoryManager*) new ParNewMemoryManager();
72 }
73
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.
|
42 (void)const_cast<instanceOop&>(_memory_mgr_obj = instanceOop(NULL));
43 }
44
45 void MemoryManager::add_pool(MemoryPool* pool) {
46 assert(_num_pools < MemoryManager::max_num_pools, "_num_pools exceeds the max");
47 if (_num_pools < MemoryManager::max_num_pools) {
48 _pools[_num_pools] = pool;
49 _num_pools++;
50 }
51 pool->add_manager(this);
52 }
53
54 MemoryManager* MemoryManager::get_code_cache_memory_manager() {
55 return (MemoryManager*) new CodeCacheMemoryManager();
56 }
57
58 MemoryManager* MemoryManager::get_metaspace_memory_manager() {
59 return (MemoryManager*) new MetaspaceMemoryManager();
60 }
61
62 instanceOop MemoryManager::get_memory_manager_instance(TRAPS) {
63 // Must do an acquire so as to force ordering of subsequent
64 // loads from anything _memory_mgr_obj points to or implies.
65 instanceOop mgr_obj = (instanceOop)OrderAccess::load_ptr_acquire(&_memory_mgr_obj);
66 if (mgr_obj == NULL) {
67 // It's ok for more than one thread to execute the code up to the locked region.
68 // Extra manager instances will just be gc'ed.
69 Klass* k = Management::sun_management_ManagementFactoryHelper_klass(CHECK_0);
70
71 Handle mgr_name = java_lang_String::create_from_str(name(), CHECK_0);
72
73 JavaValue result(T_OBJECT);
74 JavaCallArguments args;
75 args.push_oop(mgr_name); // Argument 1
76
77 Symbol* method_name = NULL;
78 Symbol* signature = NULL;
79 if (is_gc_memory_manager()) {
80 Klass* extKlass = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK_0);
81 // com.sun.management.GarbageCollectorMXBean is in jdk.management module which may not be present.
|