< prev index next >

src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp

Print this page
rev 47884 : 8191564: Refactor GC related servicability code into GC specific subclasses

*** 31,40 **** --- 31,41 ---- #include "gc/parallel/generationSizer.hpp" #include "gc/parallel/objectStartArray.inline.hpp" #include "gc/parallel/parallelScavengeHeap.inline.hpp" #include "gc/parallel/psAdaptiveSizePolicy.hpp" #include "gc/parallel/psMarkSweep.hpp" + #include "gc/parallel/psMemoryPool.hpp" #include "gc/parallel/psParallelCompact.inline.hpp" #include "gc/parallel/psPromotionManager.hpp" #include "gc/parallel/psScavenge.hpp" #include "gc/parallel/vmPSOperations.hpp" #include "gc/shared/gcHeapSummary.hpp"
*** 43,52 **** --- 44,54 ---- #include "logging/log.hpp" #include "oops/oop.inline.hpp" #include "runtime/handles.inline.hpp" #include "runtime/java.hpp" #include "runtime/vmThread.hpp" + #include "services/memoryManager.hpp" #include "services/memTracker.hpp" #include "utilities/vmError.hpp" PSYoungGen* ParallelScavengeHeap::_young_gen = NULL; PSOldGen* ParallelScavengeHeap::_old_gen = NULL;
*** 672,676 **** --- 674,736 ---- } void ParallelScavengeHeap::verify_nmethod(nmethod* nm) { CodeCache::verify_scavenge_root_nmethod(nm); } + + class PSScavengeMemoryManager : public GCMemoryManager { + private: + public: + PSScavengeMemoryManager() : GCMemoryManager() {} + + const char* name() { return "PS Scavenge"; } + }; + + class PSMarkSweepMemoryManager : public GCMemoryManager { + private: + public: + PSMarkSweepMemoryManager() : GCMemoryManager() {} + + const char* name() { return "PS MarkSweep"; } + }; + + GrowableArray<GCMemoryManager*> ParallelScavengeHeap::memory_managers() { + _minor_mgr = new PSScavengeMemoryManager(); + _major_mgr = new PSMarkSweepMemoryManager(); + GrowableArray<GCMemoryManager*> mem_mgrs; + mem_mgrs.append(_minor_mgr); + mem_mgrs.append(_major_mgr); + return mem_mgrs; + } + + GrowableArray<MemoryPool*> ParallelScavengeHeap::memory_pools() { + PSYoungGen* young = young_gen(); + EdenMutableSpacePool* eden = new EdenMutableSpacePool(young, + young->eden_space(), + "PS Eden Space", + MemoryPool::Heap, + false /* support_usage_threshold */); + + SurvivorMutableSpacePool* survivor = new SurvivorMutableSpacePool(young, + "PS Survivor Space", + MemoryPool::Heap, + false /* support_usage_threshold */); + + PSGenerationPool* old_gen_pool = new PSGenerationPool(old_gen(), + "PS Old Gen", + MemoryPool::Heap, + true /* support_usage_threshold */); + + _major_mgr->add_pool(eden); + _major_mgr->add_pool(survivor); + _major_mgr->add_pool(old_gen_pool); + + _minor_mgr->add_pool(eden); + _minor_mgr->add_pool(survivor); + + GrowableArray<MemoryPool*> mem_pools; + mem_pools.append(eden); + mem_pools.append(survivor); + mem_pools.append(old_gen_pool); + return mem_pools; + } +
< prev index next >