为什么 Java 上的默认 MaxMetaspaceSize 非常大?

Why is the default MaxMetaspaceSize on Java very large?

我通过如下打印 JVM 参数检查了 JVM 上的默认 MaxMetaspaceSize

java -XX:+PrintFlagsFinal -version | grep MaxMetaspaceSize
    uintx MaxMetaspaceSize                          = 18446744073709547520                    {product}
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

鉴于这些 JVM 参数值以字节为单位显示,默认的 MaxMetaspaceSize 约为 18 艾字节!

谁能解释一下为什么默认的 MaxMetaspaceSize 值这么大?

18446744073709547520 = 0xFFFFFFFFFFFFFF000

这基本上是最大可能的 64 位整数(四舍五入到页面大小)。
这个想法是默认 MaxMetaspaceSize 无限制。