Java 8: 从永久代(PermGen)到元空间(Metaspace)

时间:2020-12-31 17:18:45

名词概念:

元空间: Metaspace
1,大部分类元数据都在本地内存中分配。

2,默认情况下,类元数据只受可用的本地内存限制(容量取决于是32/64位操作系统的可用虚拟内存大小)。

3,新参数(MaxMetaspaceSize)用于限制本地内存分配给类元数据的大小。如果没有指定这个参数,元空间会在运行时根据需要动态调整。

4,对于僵死的类及类加载器的垃圾回收将在元数据使用达到“MaxMetaspaceSize”参数的设定值时进行。

5,适时地监控和调整元空间对于减小垃圾回收频率和减少延时是很有必要的。持续的元空间垃圾回收说明,可能存在类、类加载器导致的内存泄漏或是大小设置不合适。

 

永久代: PermGen
1, 这部分内存空间将全部移除。
2, JVM的参数:PermSizeMaxPermSize 会被忽略并给出警告(如果在启用时设置了这两个参数)。

 

元空间的特点:
1,每个加载器有专门的存储空间。
2,不会单独回收某个类。
3,元空间里的对象的位置是固定的。
4,如果发现某个加载器不再存货了,会把相关的空间整个回收。