--- old/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp 2017-10-16 15:55:13.544939932 +0200 +++ new/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp 2017-10-16 15:55:13.272930777 +0200 @@ -54,6 +54,7 @@ #include "gc/shared/referencePolicy.hpp" #include "gc/shared/strongRootsScope.hpp" #include "gc/shared/taskqueue.inline.hpp" +#include "gc/shared/weakProcessor.hpp" #include "logging/log.hpp" #include "logging/logStream.hpp" #include "memory/allocation.hpp" @@ -5223,6 +5224,11 @@ pt.print_all_references(); } + { + GCTraceTime(Debug, gc, phases) t("Weak Processing", _gc_timer_cm); + WeakProcessor::unlink_or_oops_do(&_is_alive_closure, &cmsKeepAliveClosure, &cmsDrainMarkingStackClosure); + } + // This is the point where the entire marking should have completed. verify_work_stacks_empty();