< prev index next >

src/hotspot/share/runtime/arguments.cpp

Print this page

        

@@ -1735,10 +1735,20 @@
     if (FLAG_IS_DEFAULT(UseCompressedClassPointers)) {
       FLAG_SET_ERGO(bool, UseCompressedClassPointers, true);
     }
     // Check the CompressedClassSpaceSize to make sure we use compressed klass ptrs.
     if (UseCompressedClassPointers) {
+      size_t min_metaspace_sz = Metaspace::calculate_min_metaspace_size();
+      if ((min_metaspace_sz + CompressedClassSpaceSize) >  MaxMetaspaceSize) {
+        if (min_metaspace_sz >= MaxMetaspaceSize) {
+          vm_exit_during_initialization("MaxMetaspaceSize is too small.");
+        } else {
+          FLAG_SET_ERGO(size_t, CompressedClassSpaceSize,
+                                        MaxMetaspaceSize - min_metaspace_sz);
+        }
+      }
+
       if (CompressedClassSpaceSize > KlassEncodingMetaspaceMax) {
         warning("CompressedClassSpaceSize is too large for UseCompressedClassPointers");
         FLAG_SET_DEFAULT(UseCompressedClassPointers, false);
       }
     }
< prev index next >