老年代泄漏与MetaSpace

时间:2021-08-10 14:50:05
http://blog.csdn.net/goodzyw/article/details/48036037
https://*.com/questions/17652280/is-the-permgen-space-ever-decreased
http://blog.csdn.net/zhyhang/article/details/17246223


永久代内存泄漏的情况一般会报:java.lang.OutOfMemoryError: PermGen space错误
永久代没有单独的垃圾回收器,需要通过老年代的垃圾回收器进行回收。没有类引用时才可能会回收相关信息。
老的jvm中可使用-XX:+CMSPermGenSweepingEnabled、-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled在cms时进行回收。
一个类的元数据大约占5K的大小。
java8中PermGen被移除,PermSize和MaxPermSize被忽略并告警。
MetaSpace容量:默认情况下,类元数据只受可用的本地内存限制(容量取决于是32位或是64位操作系统的可用虚拟内存大小)。新参数(MaxMetaspaceSize)用于限制本地内存分配给类元数据的大小。
对于僵死的类及类加载器的垃圾回收将在元数据使用达到“MaxMetaspaceSize”参数的设定值时进行。