< prev index next >
src/share/vm/gc/shared/collectedHeap.cpp
Print this page
rev 13298 : 8184751: Provide thread pool for parallel safepoint cleanup
*** 31,40 ****
--- 31,41 ----
#include "gc/shared/gcHeapSummary.hpp"
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/gcTraceTime.inline.hpp"
#include "gc/shared/gcWhen.hpp"
#include "gc/shared/vmGCOperations.hpp"
+ #include "gc/shared/workgroup.hpp"
#include "logging/log.hpp"
#include "memory/metaspace.hpp"
#include "memory/resourceArea.hpp"
#include "oops/instanceMirrorKlass.hpp"
#include "oops/oop.inline.hpp"
*** 178,187 ****
--- 179,189 ----
// Memory state functions.
CollectedHeap::CollectedHeap() :
_barrier_set(NULL),
+ _safepoint_workers(NULL),
_is_gc_active(false),
_total_collections(0),
_total_full_collections(0),
_gc_cause(GCCause::_no_gc),
_gc_lastcause(GCCause::_no_gc),
*** 211,220 ****
--- 213,229 ----
if (LogEvents) {
_gc_heap_log = new GCHeapLog();
} else {
_gc_heap_log = NULL;
}
+
+ if (ParallelSafepointCleanupThreads > 1) {
+ _safepoint_workers = new WorkGang("Safepoint Cleanup Thread", ParallelSafepointCleanupThreads,
+ /* are_GC_task_threads */ false,
+ /* are_ConcurrentGC_threads */ false);
+ _safepoint_workers->initialize_workers();
+ }
}
// This interface assumes that it's being called by the
// vm thread. It collects the heap assuming that the
// heap lock is already held and that we are executing in
< prev index next >