GC流程

作者: 挖打发 | 来源:发表于2021-04-29 23:25 被阅读0次

    问题1 JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代
    1 判断对象是否可以回收的算法
    引用计数法、可达性分析(GCRoots)、复制算法
    2 jvm堆结构


    image.png
    分为新生代和老年代(比例为1:2),新生代分为Eden区和Survivor区,Survivor区分为from区和to区,新生代的Eden和from和to三者比例为8:1:1,当然这些比例是可以通过jvm参数改变的
    

    3 新生代回收
    a采用复制回收算法
    b当Eden区内存不足,会触发一次Minor GC
    4 老年代对象的分配和回收
    a.每个对象定义了年龄计数器,经过一次Minor GC后年龄加1,当年龄到达15次后,就会 晋升到老年代,老年代空间不足时就会进行Full GC
    b 大对象直接进入老年代,即超过Eden区空间或者一个参数 (XX:PretenureSizeThreshold=30m,无默认值)
    5 GC流程总结
    对象的正常流程:Eden区->Survior区->老年代
    新生代GC:Minor GC;老年代GC:Full GC,比 Minor GC 慢10倍,JVM 会“stop the world”,严重影响性能

    相关文章

      网友评论

          本文标题:GC流程

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