src/hotspot/share/memory/metaspace/classLoaderMetaspace.cpp
branchstuefe-new-metaspace-branch
changeset 58333 78b2e8f46dd4
parent 58227 0e7d9a23261e
child 58646 bcdba1c9f1fe
--- a/src/hotspot/share/memory/metaspace/classLoaderMetaspace.cpp	Thu Sep 19 16:28:40 2019 +0200
+++ b/src/hotspot/share/memory/metaspace/classLoaderMetaspace.cpp	Wed Sep 25 12:40:57 2019 +0200
@@ -42,14 +42,17 @@
 namespace metaspace {
 
 static bool use_class_space(bool is_class) {
-  if (Metaspace::using_class_space()) {
-    if (is_class) {
-      return true;
-    }
+  if (Metaspace::using_class_space() && is_class) {
+    return true;
   }
   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));
 }
@@ -60,9 +63,14 @@
   , _non_class_space_manager(NULL)
   , _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
   _non_class_space_manager = new SpaceManager(
-      ChunkManager::chunkmanager_nonclass(),
+      non_class_cm,
       ChunkAllocSequence::alloc_sequence_by_space_type(space_type, false),
       lock,
       RunningCounters::used_nonclass_counter(),
@@ -70,8 +78,12 @@
 
   // 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(
-        ChunkManager::chunkmanager_class(),
+        class_cm,
         ChunkAllocSequence::alloc_sequence_by_space_type(space_type, true),
         lock,
         RunningCounters::used_class_counter(),