# HG changeset patch # User stuefe # Date 1571235024 -7200 # Node ID bcdba1c9f1fea236a53cc75cae8b0d467593ddf3 # Parent 28c7e6711871f5cbf6e9c2a6772dce39f7499c37 Remove experimental MetaspaceSeparateMicroCLDs feature, since its effect was underwhelming diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace.cpp --- a/src/hotspot/share/memory/metaspace.cpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace.cpp Wed Oct 16 16:10:24 2019 +0200 @@ -716,10 +716,6 @@ ChunkManager* cm = new ChunkManager("class space chunk manager", vsl); ChunkManager::set_chunkmanager_class(cm); - if (metaspace::Settings::separate_micro_cld_allocations()) { - ChunkManager* cm2 = new ChunkManager("microcld class space chunk manager", vsl); - ChunkManager::set_chunkmanager_microclds_class(cm2); - } } @@ -839,11 +835,6 @@ ChunkManager* cm = new ChunkManager("non-class chunkmanager", vsl); ChunkManager::set_chunkmanager_nonclass(cm); - if (metaspace::Settings::separate_micro_cld_allocations()) { - ChunkManager* cm2 = new ChunkManager("microcld non-class chunk manager", vsl); - ChunkManager::set_chunkmanager_microclds_nonclass(cm2); - } - _tracer = new MetaspaceTracer(); _initialized = true; diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace/chunkManager.cpp --- a/src/hotspot/share/memory/metaspace/chunkManager.cpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace/chunkManager.cpp Wed Oct 16 16:10:24 2019 +0200 @@ -425,18 +425,6 @@ _chunkmanager_nonclass = cm; } -ChunkManager* ChunkManager::_chunkmanager_microclds_class = NULL; -ChunkManager* ChunkManager::_chunkmanager_microclds_nonclass = NULL; - -void ChunkManager::set_chunkmanager_microclds_class(ChunkManager* cm) { - assert(_chunkmanager_microclds_class == NULL, "Sanity"); - _chunkmanager_microclds_class = cm; -} - -void ChunkManager::set_chunkmanager_microclds_nonclass(ChunkManager* cm) { - assert(_chunkmanager_microclds_nonclass == NULL, "Sanity"); - _chunkmanager_microclds_nonclass = cm; -} // Update statistics. diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace/chunkManager.hpp --- a/src/hotspot/share/memory/metaspace/chunkManager.hpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace/chunkManager.hpp Wed Oct 16 16:10:24 2019 +0200 @@ -156,20 +156,6 @@ static void set_chunkmanager_class(ChunkManager* cm); static void set_chunkmanager_nonclass(ChunkManager* cm); - // If micro clds are kept separate... -private: - - static ChunkManager* _chunkmanager_microclds_class; - static ChunkManager* _chunkmanager_microclds_nonclass; - -public: - - static ChunkManager* chunkmanager_microclds_class() { return _chunkmanager_microclds_class; } - static ChunkManager* chunkmanager_microclds_nonclass() { return _chunkmanager_microclds_nonclass; } - - static void set_chunkmanager_microclds_class(ChunkManager* cm); - static void set_chunkmanager_microclds_nonclass(ChunkManager* cm); - }; diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace/classLoaderMetaspace.cpp --- a/src/hotspot/share/memory/metaspace/classLoaderMetaspace.cpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace/classLoaderMetaspace.cpp Wed Oct 16 16:10:24 2019 +0200 @@ -48,11 +48,6 @@ return false; } -static bool is_micro_cld(MetaspaceType space_type) { - return space_type == metaspace::UnsafeAnonymousMetaspaceType || - space_type == metaspace::ReflectionMetaspaceType; -} - static bool use_class_space(MetadataType mdType) { return use_class_space(is_class(mdType)); } @@ -64,8 +59,6 @@ , _class_space_manager(NULL) { ChunkManager* const non_class_cm = - is_micro_cld(_space_type) && Settings::separate_micro_cld_allocations() ? - ChunkManager::chunkmanager_microclds_nonclass() : ChunkManager::chunkmanager_nonclass(); // Initialize non-class spacemanager @@ -79,8 +72,6 @@ // If needed, initialize class spacemanager if (Metaspace::using_class_space()) { ChunkManager* const class_cm = - is_micro_cld(_space_type) && Settings::separate_micro_cld_allocations() ? - ChunkManager::chunkmanager_microclds_class() : ChunkManager::chunkmanager_class(); _class_space_manager = new SpaceManager( class_cm, diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace/classLoaderMetaspace.hpp --- a/src/hotspot/share/memory/metaspace/classLoaderMetaspace.hpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace/classLoaderMetaspace.hpp Wed Oct 16 16:10:24 2019 +0200 @@ -54,6 +54,12 @@ return is_class ? class_space_manager() : non_class_space_manager(); } + // Returns true if this class loader is of a type which will only ever load one class. + bool is_micro() const { + return _space_type == metaspace::UnsafeAnonymousMetaspaceType || + _space_type == metaspace::ReflectionMetaspaceType; + } + public: ClassLoaderMetaspace(Mutex* lock, MetaspaceType space_type); diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace/commitMask.hpp --- a/src/hotspot/share/memory/metaspace/commitMask.hpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace/commitMask.hpp Wed Oct 16 16:10:24 2019 +0200 @@ -130,15 +130,6 @@ return at(bitno); } - // Given an address range [start..end), returns true if area is fully committed through. - bool is_fully_committed_range(const MetaWord* start, size_t word_size) const { - DEBUG_ONLY(check_range(start, word_size)); - assert(word_size > 0, "zero range"); - const idx_t b1 = bitno_for_address(start); - const idx_t b2 = bitno_for_address(start + word_size); - return get_next_zero_offset(b1, b2) == b2; - } - // Given an address range, return size, in number of words, of committed area within that range. size_t get_committed_size_in_range(const MetaWord* start, size_t word_size) const { DEBUG_ONLY(check_range(start, word_size)); diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace/settings.cpp --- a/src/hotspot/share/memory/metaspace/settings.cpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace/settings.cpp Wed Oct 16 16:10:24 2019 +0200 @@ -54,7 +54,6 @@ size_t Settings::_uncommit_on_purge_min_word_size = 0; -bool Settings::_separate_micro_cld_allocations = false; void Settings::ergo_initialize() { @@ -131,9 +130,6 @@ _enlarge_chunks_in_place = MetaspaceEnlargeChunksInPlace; _enlarge_chunks_in_place_max_word_size = 256 * K; - // Optionally, we can shepherd micro cld metaspace allocs to an own root chunk. - _separate_micro_cld_allocations = MetaspaceSeparateMicroCLDs; - // Sanity checks. guarantee(commit_granule_words() <= chklvl::MAX_CHUNK_WORD_SIZE, "Too large granule size"); guarantee(is_power_of_2(commit_granule_words()), "granule size must be a power of 2"); diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/memory/metaspace/settings.hpp --- a/src/hotspot/share/memory/metaspace/settings.hpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/memory/metaspace/settings.hpp Wed Oct 16 16:10:24 2019 +0200 @@ -84,10 +84,6 @@ // Must be a multiple of and not smaller than commit granularity. static size_t _uncommit_on_purge_min_word_size; - // If true, allocations from micro-clds (CLDs which only load one class, e.g. hidden classes or - // reflection loaders) are shepherded into an own root chunk. - static bool _separate_micro_cld_allocations; - public: static size_t commit_granule_bytes() { return _commit_granule_bytes; } @@ -103,7 +99,6 @@ static bool delete_nodes_on_purge() { return _delete_nodes_on_purge; } static bool uncommit_on_purge() { return _uncommit_on_purge; } static size_t uncommit_on_purge_min_word_size() { return _uncommit_on_purge_min_word_size; } - static bool separate_micro_cld_allocations() { return _separate_micro_cld_allocations; } static void ergo_initialize(); diff -r 28c7e6711871 -r bcdba1c9f1fe src/hotspot/share/runtime/globals.hpp --- a/src/hotspot/share/runtime/globals.hpp Wed Oct 16 15:31:05 2019 +0200 +++ b/src/hotspot/share/runtime/globals.hpp Wed Oct 16 16:10:24 2019 +0200 @@ -1612,9 +1612,6 @@ product(ccstr, MetaspaceReclaimStrategy, "balanced", \ "options: balanced, aggressive, none") \ \ - product(bool, MetaspaceSeparateMicroCLDs, false, \ - "Micro CLDs are separated.") \ - \ product(bool, MetaspaceEnlargeChunksInPlace, true, \ "Metapace chunks are enlarged in place.") \ \