--- old/src/share/vm/services/memoryService.cpp 2015-10-14 13:54:42.790198592 +0200 +++ new/src/share/vm/services/memoryService.cpp 2015-10-14 13:54:42.701200745 +0200 @@ -46,6 +46,7 @@ #include "utilities/growableArray.hpp" #include "utilities/macros.hpp" #if INCLUDE_ALL_GCS +#include "gc/shenandoah/shenandoahHeap.hpp" #include "gc/cms/concurrentMarkSweepGeneration.hpp" #include "gc/cms/parNewGeneration.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" @@ -54,6 +55,7 @@ #include "gc/parallel/psYoungGen.hpp" #include "services/g1MemoryPool.hpp" #include "services/psMemoryPool.hpp" +#include "services/shenandoahMemoryPool.hpp" #endif // INCLUDE_ALL_GCS GrowableArray* MemoryService::_pools_list = @@ -98,6 +100,10 @@ add_g1_heap_info(G1CollectedHeap::heap()); break; } + case CollectedHeap::ShenandoahHeap : { + add_shenandoah_heap_info(ShenandoahHeap::heap()); + break; + } #endif // INCLUDE_ALL_GCS default: { guarantee(false, "Unrecognized kind of heap"); @@ -115,8 +121,12 @@ // All memory pools and memory managers are initialized. // + if (UseShenandoahGC) { + _major_gc_manager->initialize_gc_stat_info(); + } else { _minor_gc_manager->initialize_gc_stat_info(); _major_gc_manager->initialize_gc_stat_info(); + } } // Add memory pools for GenCollectedHeap @@ -187,6 +197,15 @@ add_g1YoungGen_memory_pool(g1h, _major_gc_manager, _minor_gc_manager); add_g1OldGen_memory_pool(g1h, _major_gc_manager); } + +void MemoryService::add_shenandoah_heap_info(ShenandoahHeap* pgch) { + assert(UseShenandoahGC, "sanity"); + _major_gc_manager = MemoryManager::get_shenandoah_memory_manager(); + _minor_gc_manager = MemoryManager::get_shenandoah_memory_manager(); + _managers_list->append(_major_gc_manager); + add_shenandoah_memory_pool(pgch, _major_gc_manager); +} + #endif // INCLUDE_ALL_GCS MemoryPool* MemoryService::add_gen(Generation* gen, @@ -385,6 +404,19 @@ mgr->add_pool(old_gen); _pools_list->append(old_gen); } + +void MemoryService::add_shenandoah_memory_pool(ShenandoahHeap* pgc, + MemoryManager* mgr) { + ShenandoahMemoryPool* pool = new ShenandoahMemoryPool(pgc, + "Shenandoah", + MemoryPool::Heap, + false /* support_usage_threshold */); + + mgr->add_pool(pool); + _pools_list->append(pool); +} + + #endif // INCLUDE_ALL_GCS void MemoryService::add_code_heap_memory_pool(CodeHeap* heap, const char* name) {