开发者社区> 问答> 正文

简述分代垃圾回收器是怎么工作的?

简述分代垃圾回收器是怎么工作的?哪位大神指点一下

展开
收起
请回答1024 2020-03-11 12:41:51 638 0
1 条回答
写回答
取消 提交回答
  • 分代回收器有两个分区:老生代和新生代,新生代默认的空间占比总空间的 1/3,老生代的默认占比是 2/3。

    新生代使用的是复制算法,新生代里有 3 个分区:Eden、To Survivor、From Survivor,它们的默认占比是 8:1:1,它的执行流程如下:

    • 把 Eden + From Survivor 存活的对象放入 To Survivor 区;
    • 清空 Eden 和 From Survivor 分区;
    • From Survivor 和 To Survivor 分区交换,From Survivor 变 To Survivor,To Survivor 变 From Survivor。

    每次在 From Survivor 到 To Survivor 移动时都存活的对象,年龄就 +1,当年龄到达 15(默认配置是 15)时,升级为老生代。大对象也会直接进入老生代。

    老生代当空间占用到达某个值之后就会触发全局垃圾收回,一般使用标记整理的执行算法。以上这些循环往复就构成了整个分代垃圾回收的整体执行流程。

    2020-03-11 12:52:45
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JVM的GC 立即下载
JVM实战 立即下载
低代码开发师(初级)实战教程 立即下载