diff -r 6e3ab27f9144 -r 69c081ca110a src/hotspot/share/runtime/safepoint.cpp --- a/src/hotspot/share/runtime/safepoint.cpp Thu Nov 02 18:44:44 2017 +0300 +++ b/src/hotspot/share/runtime/safepoint.cpp Thu Nov 02 11:00:34 2017 -0500 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "classfile/classLoaderData.hpp" #include "classfile/stringTable.hpp" #include "classfile/symbolTable.hpp" #include "classfile/systemDictionary.hpp" @@ -618,6 +619,14 @@ ClassLoaderDataGraph::purge_if_needed(); event_safepoint_cleanup_task_commit(event, name); } + + if (!_subtasks.is_task_claimed(SafepointSynchronize::SAFEPOINT_CLEANUP_SYSTEM_DICTIONARY_RESIZE)) { + const char* name = "resizing system dictionaries"; + EventSafepointCleanupTask event; + TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup)); + ClassLoaderDataGraph::resize_if_needed(); + event_safepoint_cleanup_task_commit(event, name); + } _subtasks.all_tasks_completed(_num_workers); } };