一、问题背景
-
环境:Windows10 64位, Java8 HotSpot VM(mixed mode);
-
在Java虚拟机规范中指出:
即
方法区存储每个类的具体结构,包括:运行时常量池、字段和方法数据以及方法和构造器的字节码等信息; -
在Java7及之前,HotSpot虚拟机中
方法区的具体实现称为PermGen(永久代),而Java8及之后改为Metaspace(元空间); -
永久代与元空间的不同之处在于,永久代使用的JVM虚拟机的内存,而元空间使用的是系统的本地内存; -
但是在实际运行中,使用
jinfo -flag MaxMetaspaceSize pid指令查看时,却发现MaxMetaspaceSize的大小为18446744073709486080(以字节为单位);

-
同时18446744073709486080=26

本文探讨了Java8中MaxMetaSpaceSize的背景、默认值及其原因。MaxMetaSpaceSize用于设定方法区的最大大小,它与操作系统内存分配有关。在Java8中,默认值并非无限,而是基于内存对齐策略,这有助于更有效地利用系统资源。
最低0.47元/天 解锁文章
9万+

被折叠的 条评论
为什么被折叠?



