--- old/src/hotspot/share/runtime/arguments.cpp 2017-10-10 12:02:49.195358645 +0900 +++ new/src/hotspot/share/runtime/arguments.cpp 2017-10-10 12:02:48.997354452 +0900 @@ -1737,6 +1737,16 @@ } // 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);