代码改变世界

MetaSpace

2022-03-05 21:06  tonyniu8  阅读(343)  评论(0编辑  收藏  举报

持久代,PermGen Space

定义:
是指内存的永久保存区域,说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。
 JVM 种类有很多,比如 Oralce-Sun Hotspot, Oralce JRockit, IBM J9, Taobao JVM等等。当然武林盟主是Hotspot了,这个毫无争议。需要注意的是,PermGen space是Oracle-Sun Hotspot才有,JRockit以及J9是没有这个区域。
持久代中包含了虚拟机中所有可通过反射获取到的数据,比如class和method对象。

PermGen Space,

将被全部移除。JVM的参数:PermSize 和 MaxPermSize 会被忽略并给出警告

JDK8 HotSpot JVM 使用本地内存来存储类元数据信息并称之为:元空间(Metaspace);
默认情况下,类元数据只受可用的本地内存限制(容量取决于是32位或是64位操作系统的可用虚拟内存大小)。
新参数(MaxMetaspaceSize)用于限制本地内存分配给类元数据的大小。如果没有指定这个参数,元空间会在运行时根据需要动态调整。

ref

https://blog.csdn.net/kingmax54212008/article/details/104165185