前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM 彻底搞懂几种常见的垃圾回收机制|标记清除|标记复制|标记整理

JVM 彻底搞懂几种常见的垃圾回收机制|标记清除|标记复制|标记整理

作者头像
AI码师
发布2022-12-22 10:26:19
1.2K0
发布2022-12-22 10:26:19
举报

B站搜索“乐哥聊编程“有本篇文章配套视频‍ https://www.bilibili.com/video/BV1H24y1C7Tp/

分代收集

为什么会出现分代收集呢,这是由对象存活周期不同决定的。在jvm中有些对象是用完就不需要的(业务对象),有些对象则是长久存留的(如Spring的一些组件),所以我们不可能按照同样的收集方式去处理这些对象,所以jvm就会把这些对象进行区分,将存活不久的对象放在新生代,长期存活的放在老年代,然后分别对新生代和老年代采用不同的收集算法,所以这个就叫分代收集。

标记复制

标记复制算法会将内存空间一分为二,每次只会使用一半,另外一半用来保存下次存活的对象。在进行收集时,它会将存活对象全部复制到另外一半的内存空间,然后再把零碎的垃圾对象全部回收。

为什么标记复制一般用在年轻代?

因为标记复制 复制的是存活对象,存活对象越多,那么复制的效率就越低,但是年轻代存活对象一般比较少,所以非常适合使用标记复制算法。

回收前

回收后

标记清除

分为两个步骤:标记和清除,清除的是垃圾,标记的可以是垃圾也可以是存活对象,要看具体垃圾回收算法实现。

回收前

回收后

存在的问题

会产生空间碎片

标记压缩(整理)

标记压缩是在标记清除后,进行了一次碎片整理的操作,使得碎片空间小时,对象存放在连续的空间中。

回收前

回收后

面试题

为什么会出现分代收集呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分代收集
  • 标记复制
    • 为什么标记复制一般用在年轻代?
      • 回收前
        • 回收后
        • 标记清除
          • 回收前
            • 回收后
              • 存在的问题
              • 标记压缩(整理)
                • 回收前
                  • 回收后
                  • 面试题
                  相关产品与服务
                  文件存储
                  文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档