美文网首页
JVM内存区域划分

JVM内存区域划分

作者: 一只小海螺 | 来源:发表于2021-07-22 15:29 被阅读0次
    企业微信截图_16269389364939.png

    本地方法栈

    保存native方法进入区域的地址

    程序计数器

    用于记录当前执行字节码指令的位置

    虚拟机栈

    每个线程都有自己的虚拟机栈,用来存放执行方法时的局部变量、操作栈、动态链接、方法返回地址等

    堆区

    对象创建后,数据会保存到堆区,堆区也是jvm进行垃圾回收的地方

    垃圾回收

    • 回收对象判断算法
      1.引用计数法
      2.可达性分析
    • 垃圾回收算法
      1.标记清除法
      产生内存碎片
      2.标记整理法
      在标记清除的基础上,进行整理,效率低
      3.标记复制法
      耗内存
      4.分代收集法
      将堆区分为新生代、老年代
      4.1 新生代
      每次垃圾回收都会有大量的对象死去,采用标记复制法
      新生代分为 Eden、Survivor From、Survivor To三块,比例为8:1:1
      Survivor区相当于Eden和老年代中间的缓存
      新产生的对象都会进入Eden区等待垃圾回收,每次垃圾存活的对象会进入 Survivor From区
      而在From区中,仍存活的对象会根据他们的年龄值来决定去向。(From Survivor和To Survivor的逻辑关系会发生颠倒: From变To , To变From,目的是保证有连续的空间存放对方,避免碎片化的发生)

    4.2 老年代
    经过多次垃圾回收仍然存活的对象会进入老年代,老年代每次垃圾回收只有少量的对象死去,采用标记清除或者标记整理法

    方法区(JDK1.8后也叫metaspace区)

    存放常量池、被加载的类的信息,可以看成是类(Class)的元数据

    相关文章

      网友评论

          本文标题:JVM内存区域划分

          本文链接:https://www.haomeiwen.com/subject/vlzemltx.html