前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题28:GC算法——标记压缩&分代算法

面试题28:GC算法——标记压缩&分代算法

作者头像
爪哇缪斯
发布2023-05-09 21:38:51
1180
发布2023-05-09 21:38:51
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

【标记压缩算法】

标记压缩算法如下图所示:

  • 由于老年代的对象存活率很高,不容易被消亡,而复制算法不仅存在空间浪费,而且当老年代对象很多的时候,复制对象的效率会非常的低,所以,基于老年代的特性产生了标记压缩算法。
  • 它在标记清除算法的基础上做了优化,和标记清除算法一样,也是首先需要从根节点开始,对所有可达对象做一次标记。但之后,它并不是简单地清理未标记的对象,而是将所有的存活对象压缩到内存的一端,然后,清理边界外所有的空间。这种方法即避免了碎片的产生,又不需要两块相同的内存空间,因此,性价比很高。

【分代算法】

分代算法如下图所示:

  • 当前jvm的垃圾回收,都是采用分代收集算法
  • 针对新生代由于GC都有大量对象死去被回收,少数存量对象,只需要复制少量对象,就可以完全清除S0/S1的垃圾对象空间。所以采用“复制算法”更为合适;
  • 老年代对象存活率高,每次GC只清除少部分对象,所以采用“标记-清除”“标记-压缩”算法来回收。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档