--- old/src/hotspot/share/memory/metaspaceShared.cpp 2020-08-31 08:10:38.258588117 -0700 +++ new/src/hotspot/share/memory/metaspaceShared.cpp 2020-08-31 08:10:38.030579535 -0700 @@ -1076,19 +1076,23 @@ _mc_region.pack(&_rw_region); builder.dump_rw_region(); #if INCLUDE_CDS_JAVA_HEAP - // Archive the ModuleEntry's and PackageEntry's of the 3 built-in loaders - char* start = _rw_region.top(); - ClassLoaderDataShared::allocate_archived_tables(); - ArchiveBuilder::alloc_stats()->record_modules(_rw_region.top() - start, /*read_only*/false); + if (MetaspaceShared::use_full_module_graph()) { + // Archive the ModuleEntry's and PackageEntry's of the 3 built-in loaders + char* start = _rw_region.top(); + ClassLoaderDataShared::allocate_archived_tables(); + ArchiveBuilder::alloc_stats()->record_modules(_rw_region.top() - start, /*read_only*/false); + } #endif } { _rw_region.pack(&_ro_region); builder.dump_ro_region(); #if INCLUDE_CDS_JAVA_HEAP - char* start = _ro_region.top(); - ClassLoaderDataShared::init_archived_tables(); - ArchiveBuilder::alloc_stats()->record_modules(_ro_region.top() - start, /*read_only*/true); + if (MetaspaceShared::use_full_module_graph()) { + char* start = _ro_region.top(); + ClassLoaderDataShared::init_archived_tables(); + ArchiveBuilder::alloc_stats()->record_modules(_ro_region.top() - start, /*read_only*/true); + } #endif } builder.relocate_pointers(); @@ -2060,8 +2064,14 @@ } bool MetaspaceShared::use_full_module_graph() { - return _use_optimized_module_handling && _use_full_module_graph && + bool result = _use_optimized_module_handling && _use_full_module_graph && (UseSharedSpaces || DumpSharedSpaces) && HeapShared::is_heap_object_archiving_allowed(); + if (result && UseSharedSpaces) { + // Classes used by the archived full module graph are loaded in JVMTI early phase. + assert(!(JvmtiExport::should_post_class_file_load_hook() && JvmtiExport::has_early_class_hook_env()), + "CDS should be disabled if early class hooks are enabled"); + } + return result; } void MetaspaceShared::print_on(outputStream* st) {