< prev index next >

src/share/vm/services/memoryService.cpp

Print this page
rev 14280 : Make sure we have at least one memory pool per memory manager (JMX).


 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);


< prev index next >