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 enum Name {
57 Abstract,
58 CodeCache,
59 Metaspace,
60 Copy,
61 MarkSweepCompact,
62 ParNew,
63 ConcurrentMarkSweep,
64 PSScavenge,
65 PSMarkSweep,
66 G1YoungGen,
67 G1OldGen
68 };
69
70 MemoryManager();
71
72 int num_memory_pools() const { return _num_pools; }
73 MemoryPool* get_memory_pool(int index) {
74 assert(index >= 0 && index < _num_pools, "Invalid index");
75 return _pools[index];
76 }
77
78 void add_pool(MemoryPool* pool);
79
80 bool is_manager(instanceHandle mh) { return mh() == _memory_mgr_obj; }
81
82 virtual instanceOop get_memory_manager_instance(TRAPS);
83 virtual MemoryManager::Name kind() { return MemoryManager::Abstract; }
84 virtual bool is_gc_memory_manager() { return false; }
85 virtual const char* name() = 0;
86
87 // GC support
88 void oops_do(OopClosure* f);
89
90 // Static factory methods to get a memory manager of a specific type
91 static MemoryManager* get_code_cache_memory_manager();
92 static MemoryManager* get_metaspace_memory_manager();
93 static GCMemoryManager* get_copy_memory_manager();
94 static GCMemoryManager* get_msc_memory_manager();
95 static GCMemoryManager* get_parnew_memory_manager();
96 static GCMemoryManager* get_cms_memory_manager();
97 static GCMemoryManager* get_psScavenge_memory_manager();
98 static GCMemoryManager* get_psMarkSweep_memory_manager();
99 static GCMemoryManager* get_g1YoungGen_memory_manager();
100 static GCMemoryManager* get_g1OldGen_memory_manager();
101
102 };
103
104 class CodeCacheMemoryManager : public MemoryManager {
105 private:
106 public:
107 CodeCacheMemoryManager() : MemoryManager() {}
108
109 MemoryManager::Name kind() { return MemoryManager::CodeCache; }
110 const char* name() { return "CodeCacheManager"; }
111 };
112
113 class MetaspaceMemoryManager : public MemoryManager {
114 public:
115 MetaspaceMemoryManager() : MemoryManager() {}
116
117 MemoryManager::Name kind() { return MemoryManager::Metaspace; }
118 const char *name() { return "Metaspace Manager"; }
119 };
120
121 class GCStatInfo : public ResourceObj {
265 MemoryManager::Name kind() { return MemoryManager::PSMarkSweep; }
266 const char* name() { return "PS MarkSweep"; }
267 };
268
269 class G1YoungGenMemoryManager : public GCMemoryManager {
270 private:
271 public:
272 G1YoungGenMemoryManager() : GCMemoryManager() {}
273
274 MemoryManager::Name kind() { return MemoryManager::G1YoungGen; }
275 const char* name() { return "G1 Young Generation"; }
276 };
277
278 class G1OldGenMemoryManager : public GCMemoryManager {
279 private:
280 public:
281 G1OldGenMemoryManager() : GCMemoryManager() {}
282
283 MemoryManager::Name kind() { return MemoryManager::G1OldGen; }
284 const char* name() { return "G1 Old Generation"; }
285 };
286
287 #endif // SHARE_VM_SERVICES_MEMORYMANAGER_HPP
|
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 enum Name {
57 Abstract,
58 CodeCache,
59 Metaspace,
60 Copy,
61 MarkSweepCompact,
62 ParNew,
63 ConcurrentMarkSweep,
64 PSScavenge,
65 PSMarkSweep,
66 G1YoungGen,
67 G1OldGen,
68 Epsilon,
69 };
70
71 MemoryManager();
72
73 int num_memory_pools() const { return _num_pools; }
74 MemoryPool* get_memory_pool(int index) {
75 assert(index >= 0 && index < _num_pools, "Invalid index");
76 return _pools[index];
77 }
78
79 void add_pool(MemoryPool* pool);
80
81 bool is_manager(instanceHandle mh) { return mh() == _memory_mgr_obj; }
82
83 virtual instanceOop get_memory_manager_instance(TRAPS);
84 virtual MemoryManager::Name kind() { return MemoryManager::Abstract; }
85 virtual bool is_gc_memory_manager() { return false; }
86 virtual const char* name() = 0;
87
88 // GC support
89 void oops_do(OopClosure* f);
90
91 // Static factory methods to get a memory manager of a specific type
92 static MemoryManager* get_code_cache_memory_manager();
93 static MemoryManager* get_metaspace_memory_manager();
94 static GCMemoryManager* get_copy_memory_manager();
95 static GCMemoryManager* get_msc_memory_manager();
96 static GCMemoryManager* get_parnew_memory_manager();
97 static GCMemoryManager* get_cms_memory_manager();
98 static GCMemoryManager* get_psScavenge_memory_manager();
99 static GCMemoryManager* get_psMarkSweep_memory_manager();
100 static GCMemoryManager* get_g1YoungGen_memory_manager();
101 static GCMemoryManager* get_g1OldGen_memory_manager();
102 static GCMemoryManager* get_epsilon_memory_manager();
103 };
104
105 class CodeCacheMemoryManager : public MemoryManager {
106 private:
107 public:
108 CodeCacheMemoryManager() : MemoryManager() {}
109
110 MemoryManager::Name kind() { return MemoryManager::CodeCache; }
111 const char* name() { return "CodeCacheManager"; }
112 };
113
114 class MetaspaceMemoryManager : public MemoryManager {
115 public:
116 MetaspaceMemoryManager() : MemoryManager() {}
117
118 MemoryManager::Name kind() { return MemoryManager::Metaspace; }
119 const char *name() { return "Metaspace Manager"; }
120 };
121
122 class GCStatInfo : public ResourceObj {
266 MemoryManager::Name kind() { return MemoryManager::PSMarkSweep; }
267 const char* name() { return "PS MarkSweep"; }
268 };
269
270 class G1YoungGenMemoryManager : public GCMemoryManager {
271 private:
272 public:
273 G1YoungGenMemoryManager() : GCMemoryManager() {}
274
275 MemoryManager::Name kind() { return MemoryManager::G1YoungGen; }
276 const char* name() { return "G1 Young Generation"; }
277 };
278
279 class G1OldGenMemoryManager : public GCMemoryManager {
280 private:
281 public:
282 G1OldGenMemoryManager() : GCMemoryManager() {}
283
284 MemoryManager::Name kind() { return MemoryManager::G1OldGen; }
285 const char* name() { return "G1 Old Generation"; }
286 };
287
288 class EpsilonMemoryManager : public GCMemoryManager {
289 private:
290 public:
291 EpsilonMemoryManager() : GCMemoryManager() {}
292
293 MemoryManager::Name kind() { return MemoryManager::Epsilon; }
294 const char* name() { return "Epsilon Generation"; }
295 };
296
297 #endif // SHARE_VM_SERVICES_MEMORYMANAGER_HPP
|