jvm 为什么java 8中的MaxMetaSpaceSize的默认值为18446744073709486080?

ddhy6vgd  于 2022-11-07  发布在  Java
关注(0)|答案(1)|浏览(204)

我知道MaxMetaspaceSize在默认情况下是无限制的,对于Windows x64,最大内存大小是2^64(18446744073709551616)(以字节为单位),所以为什么不将MaxMetaspaceSize设置为2^64,而是将其设置为18446744073709486080,即:2^64-2^16

lyfkaqu1

lyfkaqu11#

HotSpot JVM中的“ulimited”大小由适合64位整数变量的最大值(即264-1)表示。
MaxMetaSpaceSize然后被进一步对齐(向下舍入)到最小元空间分配单元

// Ideally, we would be able to set the default value of MaxMetaspaceSize in
  // globals.hpp to the aligned value, but this is not possible, since the
  // alignment depends on other flags being parsed.
  MaxMetaspaceSize = align_size_down_bounded(MaxMetaspaceSize, _reserve_alignment);

在Windows上等于64 K(216)。

相关问题