188
189 _minor_gc_manager = MemoryManager::get_g1YoungGen_memory_manager();
190 _major_gc_manager = MemoryManager::get_g1OldGen_memory_manager();
191 _managers_list->append(_minor_gc_manager);
192 _managers_list->append(_major_gc_manager);
193
194 add_g1YoungGen_memory_pool(g1h, _major_gc_manager, _minor_gc_manager);
195 add_g1OldGen_memory_pool(g1h, _major_gc_manager);
196 }
197
198 void MemoryService::add_shenandoah_heap_info(ShenandoahHeap* pgch) {
199 assert(UseShenandoahGC, "sanity");
200
201 // Need to have different names for these managers, because having the same name
202 // would confuse notification mechanics: it will enable notifications only for
203 // the first manager with the matching name.
204 _major_gc_manager = MemoryManager::get_shenandoah_major_memory_manager();
205 _minor_gc_manager = MemoryManager::get_shenandoah_minor_memory_manager();
206 _managers_list->append(_major_gc_manager);
207 _managers_list->append(_minor_gc_manager);
208 add_shenandoah_memory_pool(pgch, _minor_gc_manager, true);
209 add_shenandoah_memory_pool(pgch, _minor_gc_manager, false);
210 }
211
212 #endif // INCLUDE_ALL_GCS
213
214 MemoryPool* MemoryService::add_gen(Generation* gen,
215 const char* name,
216 bool is_heap,
217 bool support_usage_threshold) {
218
219 MemoryPool::PoolType type = (is_heap ? MemoryPool::Heap : MemoryPool::NonHeap);
220 GenerationPool* pool = new GenerationPool(gen, name, type, support_usage_threshold);
221 _pools_list->append(pool);
222 return (MemoryPool*) pool;
223 }
224
225 MemoryPool* MemoryService::add_space(ContiguousSpace* space,
226 const char* name,
227 bool is_heap,
228 size_t max_size,
229 bool support_usage_threshold) {
392 G1SurvivorPool* survivor = new G1SurvivorPool(g1h);
393
394 major_mgr->add_pool(eden);
395 major_mgr->add_pool(survivor);
396 minor_mgr->add_pool(eden);
397 minor_mgr->add_pool(survivor);
398 _pools_list->append(eden);
399 _pools_list->append(survivor);
400 }
401
402 void MemoryService::add_g1OldGen_memory_pool(G1CollectedHeap* g1h,
403 MemoryManager* mgr) {
404 assert(mgr != NULL, "should have one manager");
405
406 G1OldGenPool* old_gen = new G1OldGenPool(g1h);
407 mgr->add_pool(old_gen);
408 _pools_list->append(old_gen);
409 }
410
411 void MemoryService::add_shenandoah_memory_pool(ShenandoahHeap* pgc,
412 MemoryManager* mgr, bool global) {
413 ShenandoahMemoryPool* pool = new ShenandoahMemoryPool(pgc,
414 "Shenandoah",
415 MemoryPool::Heap,
416 false /* support_usage_threshold */);
417
418 mgr->add_pool(pool);
419 if (global) {
420 _pools_list->append(pool);
421 }
422 }
423
424
425 #endif // INCLUDE_ALL_GCS
426
427 void MemoryService::add_code_heap_memory_pool(CodeHeap* heap, const char* name) {
428 // Create new memory pool for this heap
429 MemoryPool* code_heap_pool = new CodeHeapPool(heap, name, true /* support_usage_threshold */);
430
431 // Append to lists
432 _code_heap_pools->append(code_heap_pool);
433 _pools_list->append(code_heap_pool);
434
435 if (_code_cache_manager == NULL) {
436 // Create CodeCache memory manager
437 _code_cache_manager = MemoryManager::get_code_cache_memory_manager();
438 _managers_list->append(_code_cache_manager);
439 }
440
441 _code_cache_manager->add_pool(code_heap_pool);
|
188
189 _minor_gc_manager = MemoryManager::get_g1YoungGen_memory_manager();
190 _major_gc_manager = MemoryManager::get_g1OldGen_memory_manager();
191 _managers_list->append(_minor_gc_manager);
192 _managers_list->append(_major_gc_manager);
193
194 add_g1YoungGen_memory_pool(g1h, _major_gc_manager, _minor_gc_manager);
195 add_g1OldGen_memory_pool(g1h, _major_gc_manager);
196 }
197
198 void MemoryService::add_shenandoah_heap_info(ShenandoahHeap* pgch) {
199 assert(UseShenandoahGC, "sanity");
200
201 // Need to have different names for these managers, because having the same name
202 // would confuse notification mechanics: it will enable notifications only for
203 // the first manager with the matching name.
204 _major_gc_manager = MemoryManager::get_shenandoah_major_memory_manager();
205 _minor_gc_manager = MemoryManager::get_shenandoah_minor_memory_manager();
206 _managers_list->append(_major_gc_manager);
207 _managers_list->append(_minor_gc_manager);
208 add_shenandoah_memory_pool(pgch, _major_gc_manager);
209 add_shenandoah_memory_pool(pgch, _minor_gc_manager);
210 }
211
212 #endif // INCLUDE_ALL_GCS
213
214 MemoryPool* MemoryService::add_gen(Generation* gen,
215 const char* name,
216 bool is_heap,
217 bool support_usage_threshold) {
218
219 MemoryPool::PoolType type = (is_heap ? MemoryPool::Heap : MemoryPool::NonHeap);
220 GenerationPool* pool = new GenerationPool(gen, name, type, support_usage_threshold);
221 _pools_list->append(pool);
222 return (MemoryPool*) pool;
223 }
224
225 MemoryPool* MemoryService::add_space(ContiguousSpace* space,
226 const char* name,
227 bool is_heap,
228 size_t max_size,
229 bool support_usage_threshold) {
392 G1SurvivorPool* survivor = new G1SurvivorPool(g1h);
393
394 major_mgr->add_pool(eden);
395 major_mgr->add_pool(survivor);
396 minor_mgr->add_pool(eden);
397 minor_mgr->add_pool(survivor);
398 _pools_list->append(eden);
399 _pools_list->append(survivor);
400 }
401
402 void MemoryService::add_g1OldGen_memory_pool(G1CollectedHeap* g1h,
403 MemoryManager* mgr) {
404 assert(mgr != NULL, "should have one manager");
405
406 G1OldGenPool* old_gen = new G1OldGenPool(g1h);
407 mgr->add_pool(old_gen);
408 _pools_list->append(old_gen);
409 }
410
411 void MemoryService::add_shenandoah_memory_pool(ShenandoahHeap* pgc,
412 MemoryManager* mgr) {
413 ShenandoahMemoryPool* pool = new ShenandoahMemoryPool(pgc,
414 "Shenandoah",
415 MemoryPool::Heap,
416 false /* support_usage_threshold */);
417
418 mgr->add_pool(pool);
419 _pools_list->append(pool);
420 }
421
422
423 #endif // INCLUDE_ALL_GCS
424
425 void MemoryService::add_code_heap_memory_pool(CodeHeap* heap, const char* name) {
426 // Create new memory pool for this heap
427 MemoryPool* code_heap_pool = new CodeHeapPool(heap, name, true /* support_usage_threshold */);
428
429 // Append to lists
430 _code_heap_pools->append(code_heap_pool);
431 _pools_list->append(code_heap_pool);
432
433 if (_code_cache_manager == NULL) {
434 // Create CodeCache memory manager
435 _code_cache_manager = MemoryManager::get_code_cache_memory_manager();
436 _managers_list->append(_code_cache_manager);
437 }
438
439 _code_cache_manager->add_pool(code_heap_pool);
|