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