< prev index next >
src/hotspot/share/gc/serial/serialHeap.cpp
Print this page
rev 47884 : 8191564: Refactor GC related servicability code into GC specific subclasses
@@ -21,15 +21,75 @@
* questions.
*
*/
#include "precompiled.hpp"
+#include "gc/serial/defNewGeneration.hpp"
#include "gc/serial/serialHeap.hpp"
+#include "services/memoryManager.hpp"
+#include "services/memoryPool.hpp"
SerialHeap::SerialHeap(GenCollectorPolicy* policy) : GenCollectedHeap(policy) {}
void SerialHeap::check_gen_kinds() {
assert(young_gen()->kind() == Generation::DefNew,
"Wrong youngest generation type");
assert(old_gen()->kind() == Generation::MarkSweepCompact,
"Wrong generation kind");
}
+
+class CopyMemoryManager : public GCMemoryManager {
+private:
+public:
+ CopyMemoryManager() : GCMemoryManager() {}
+
+ const char* name() { return "Copy"; }
+};
+
+class MSCMemoryManager : public GCMemoryManager {
+private:
+public:
+ MSCMemoryManager() : GCMemoryManager() {}
+
+ const char* name() { return "MarkSweepCompact"; }
+};
+
+GrowableArray<GCMemoryManager*> SerialHeap::memory_managers() {
+ _minor_mgr = new CopyMemoryManager();
+ _major_mgr = new MSCMemoryManager();
+ GrowableArray<GCMemoryManager*> mem_mgrs;
+ mem_mgrs.append(_minor_mgr);
+ mem_mgrs.append(_major_mgr);
+ return mem_mgrs;
+}
+
+GrowableArray<MemoryPool*> SerialHeap::memory_pools() {
+ DefNewGeneration* young = (DefNewGeneration*) young_gen();
+
+ // Add a memory pool for each space and young gen doesn't
+ // support low memory detection as it is expected to get filled up.
+ MemoryPool* eden = new ContiguousSpacePool(young->eden(),
+ "Eden Space",
+ MemoryPool::Heap,
+ young->max_eden_size(),
+ false /* support_usage_threshold */);
+ MemoryPool* survivor = new SurvivorContiguousSpacePool(young,
+ "Survivor Space",
+ MemoryPool::Heap,
+ young->max_survivor_size(),
+ false /* support_usage_threshold */);
+ GenerationPool* old = new GenerationPool(old_gen(), "Tenured Gen", MemoryPool::Heap, true);
+
+ GrowableArray<MemoryPool*> mem_pools;
+ mem_pools.append(eden);
+ mem_pools.append(survivor);
+ mem_pools.append(old);
+
+ _minor_mgr->add_pool(eden);
+ _minor_mgr->add_pool(survivor);
+
+ _major_mgr->add_pool(eden);
+ _major_mgr->add_pool(survivor);
+ _major_mgr->add_pool(old);
+
+ return mem_pools;
+}
< prev index next >