--- old/src/share/vm/gc/shared/collectedHeap.cpp 2017-07-21 12:06:45.307176433 +0200 +++ new/src/share/vm/gc/shared/collectedHeap.cpp 2017-07-21 12:06:45.249177388 +0200 @@ -33,6 +33,7 @@ #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" @@ -180,6 +181,7 @@ CollectedHeap::CollectedHeap() : _barrier_set(NULL), + _safepoint_workers(NULL), _is_gc_active(false), _total_collections(0), _total_full_collections(0), @@ -213,6 +215,13 @@ } 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