46 max_num_pools = 10
47 };
48
49 MemoryPool* _pools[max_num_pools];
50 int _num_pools;
51
52 protected:
53 volatile instanceOop _memory_mgr_obj;
54
55 public:
56 MemoryManager();
57
58 int num_memory_pools() const { return _num_pools; }
59 MemoryPool* get_memory_pool(int index) {
60 assert(index >= 0 && index < _num_pools, "Invalid index");
61 return _pools[index];
62 }
63
64 void add_pool(MemoryPool* pool);
65
66 bool is_manager(instanceHandle mh) { return mh() == _memory_mgr_obj; }
67
68 virtual instanceOop get_memory_manager_instance(TRAPS);
69 virtual bool is_gc_memory_manager() { return false; }
70 virtual const char* name() = 0;
71
72 // GC support
73 void oops_do(OopClosure* f);
74
75 // Static factory methods to get a memory manager of a specific type
76 static MemoryManager* get_code_cache_memory_manager();
77 static MemoryManager* get_metaspace_memory_manager();
78 static GCMemoryManager* get_copy_memory_manager();
79 static GCMemoryManager* get_msc_memory_manager();
80 static GCMemoryManager* get_parnew_memory_manager();
81 static GCMemoryManager* get_cms_memory_manager();
82 static GCMemoryManager* get_psScavenge_memory_manager();
83 static GCMemoryManager* get_psMarkSweep_memory_manager();
84 static GCMemoryManager* get_g1YoungGen_memory_manager();
85 static GCMemoryManager* get_g1OldGen_memory_manager();
86 };
87
88 class CodeCacheMemoryManager : public MemoryManager {
89 private:
90 public:
91 CodeCacheMemoryManager() : MemoryManager() {}
92
93 const char* name() { return "CodeCacheManager"; }
94 };
95
96 class MetaspaceMemoryManager : public MemoryManager {
97 public:
98 MetaspaceMemoryManager() : MemoryManager() {}
99
100 const char* name() { return "Metaspace Manager"; }
101 };
102
103 class GCStatInfo : public ResourceObj {
104 private:
105 size_t _index;
234 public:
235 PSMarkSweepMemoryManager() : GCMemoryManager() {}
236
237 const char* name() { return "PS MarkSweep"; }
238 };
239
240 class G1YoungGenMemoryManager : public GCMemoryManager {
241 private:
242 public:
243 G1YoungGenMemoryManager() : GCMemoryManager() {}
244
245 const char* name() { return "G1 Young Generation"; }
246 };
247
248 class G1OldGenMemoryManager : public GCMemoryManager {
249 private:
250 public:
251 G1OldGenMemoryManager() : GCMemoryManager() {}
252
253 const char* name() { return "G1 Old Generation"; }
254 };
255
256 #endif // SHARE_VM_SERVICES_MEMORYMANAGER_HPP
|
46 max_num_pools = 10
47 };
48
49 MemoryPool* _pools[max_num_pools];
50 int _num_pools;
51
52 protected:
53 volatile instanceOop _memory_mgr_obj;
54
55 public:
56 MemoryManager();
57
58 int num_memory_pools() const { return _num_pools; }
59 MemoryPool* get_memory_pool(int index) {
60 assert(index >= 0 && index < _num_pools, "Invalid index");
61 return _pools[index];
62 }
63
64 void add_pool(MemoryPool* pool);
65
66 bool is_manager(instanceHandle mh) { return oopDesc::bs()->write_barrier(mh()) == oopDesc::bs()->write_barrier(_memory_mgr_obj); }
67
68 virtual instanceOop get_memory_manager_instance(TRAPS);
69 virtual bool is_gc_memory_manager() { return false; }
70 virtual const char* name() = 0;
71
72 // GC support
73 void oops_do(OopClosure* f);
74
75 // Static factory methods to get a memory manager of a specific type
76 static MemoryManager* get_code_cache_memory_manager();
77 static MemoryManager* get_metaspace_memory_manager();
78 static GCMemoryManager* get_copy_memory_manager();
79 static GCMemoryManager* get_msc_memory_manager();
80 static GCMemoryManager* get_parnew_memory_manager();
81 static GCMemoryManager* get_cms_memory_manager();
82 static GCMemoryManager* get_psScavenge_memory_manager();
83 static GCMemoryManager* get_psMarkSweep_memory_manager();
84 static GCMemoryManager* get_g1YoungGen_memory_manager();
85 static GCMemoryManager* get_g1OldGen_memory_manager();
86 static GCMemoryManager* get_shenandoah_memory_manager();
87 };
88
89 class CodeCacheMemoryManager : public MemoryManager {
90 private:
91 public:
92 CodeCacheMemoryManager() : MemoryManager() {}
93
94 const char* name() { return "CodeCacheManager"; }
95 };
96
97 class MetaspaceMemoryManager : public MemoryManager {
98 public:
99 MetaspaceMemoryManager() : MemoryManager() {}
100
101 const char* name() { return "Metaspace Manager"; }
102 };
103
104 class GCStatInfo : public ResourceObj {
105 private:
106 size_t _index;
235 public:
236 PSMarkSweepMemoryManager() : GCMemoryManager() {}
237
238 const char* name() { return "PS MarkSweep"; }
239 };
240
241 class G1YoungGenMemoryManager : public GCMemoryManager {
242 private:
243 public:
244 G1YoungGenMemoryManager() : GCMemoryManager() {}
245
246 const char* name() { return "G1 Young Generation"; }
247 };
248
249 class G1OldGenMemoryManager : public GCMemoryManager {
250 private:
251 public:
252 G1OldGenMemoryManager() : GCMemoryManager() {}
253
254 const char* name() { return "G1 Old Generation"; }
255 };
256
257 class ShenandoahMemoryManager : public GCMemoryManager {
258 private:
259 public:
260 ShenandoahMemoryManager() : GCMemoryManager() {}
261
262 const char* name() { return "Shenandoah";}
263
264 };
265
266 #endif // SHARE_VM_SERVICES_MEMORYMANAGER_HPP
|