JVM 1.元空间溢出
1.元空间是什么?
从永久代到元空间(Metaspace)
- 方法区(PermGen) :方法区是一个逻辑上的概念,永久代和元空间是方法区的两种物理上的实现方法。
- JDK1.8以前的HotSpot JVM方法区,使用**永久代(permanent generation)**来实现。
- 方法区用于存放已被虚拟机加载的类信息、常量、静态变量,即编译器编译后的代码。
- 方法区是一片连续的堆空间,通过**-XX:MaxPermSize来设定永久代最大可分配空间,当JVM加载的类信息容量超过了这个值,会报OOM:PermGen**错误。
- 永久代的GC是和老年代(old generation)捆绑在一起的,无论谁满了,都会触发永久代和老年代的垃圾收集。
- JDK1.7开始了方法区的搬迁:符号引用(Symbols)移至native heap