为什么Java上默认的MaxMetaspaceSize很大?

Nil*_*sta 2 java jvm metaspace

我通过打印 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)
Run Code Online (Sandbox Code Playgroud)

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

有人可以解释一下为什么默认的 MaxMetaspaceSize 值这么大吗?

apa*_*gin 5

18446744073709547520 = 0xFFFFFFFFFFFFF000

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