首页 > 其他 > 详细

元空间是方法区的一种实现

时间:2021-03-07 22:14:43      阅读:54      评论:0      收藏:0      [点我收藏+]

一、从方法区(PermGen)到元空间(Metaspace)

  • 方法区(PermGen)
  1. JDK1.8以前的HotSpot JVM有方法区,也叫永久代(permanent generation)。
  2. 方法区用于存放已被虚拟机加载的类信息、常量、静态变量,即编译器编译后的代码。
  3. 方法区是一片连续的堆空间,通过-XX:MaxPermSize来设定永久代最大可分配空间,当JVM加载的类信息容量超过了这个值,会报OOM:PermGen错误。
  4. 永久代的GC是和老年代(old generation)捆绑在一起的,无论谁满了,都会触发永久代和老年代的垃圾收集。
  5. JDK1.7开始了方法区的部分移除:符号引用(Symbols)移至native heap,字面量(interned strings)和静态变量(class statics)移至java heap。
    • 为什么要用Metaspace替代方法区
      随着动态类加载的情况越来越多,这块内存变得不太可控,如果设置小了,系统运行过程中就容易出现内存溢出,设置大了又浪费内存。

元空间是方法区的一种实现

原文:https://www.cnblogs.com/huqi96/p/14495361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!