垃圾回收回收阶段算法

这篇具有很好参考价值的文章主要介绍了垃圾回收回收阶段算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        当成功区分出垃圾的对象和存活的对象后,下面就是要开始回收了,目前在JVM中的垃圾回收阶段的算法有三种:标记——复制算法、标记——清除算法、标记——压缩算法。

1.标记——复制算法

        将可用内存按照容量分为大小相等的两块,每次只使用其中的一块,在垃圾回收时将存活的对象复制到未被使用的另一块内存中,之后清除刚才使用的内存块中的所有对象,完成垃圾回收,适用于新生代

垃圾回收回收阶段算法,JVM,算法

 垃圾回收回收阶段算法,JVM,算法

优点:

  • 实现简单,保证内存空间的连续性,不会出现“内存碎片”的问题。

缺点:

  • 需要两倍的内存空间,内存开销较大。

  • 要更换对象的引用地址。

2.标记——清除算法(非移动式的)

这里的清除不是字面的清除空间,而是把需要清除的对象的地址保存在一个队列中,之后要添加新的对象时,则使用队列中的地址,从而覆盖掉垃圾对象,适用于老年代

垃圾回收回收阶段算法,JVM,算法 

 文章来源地址https://www.toymoban.com/news/detail-610361.html

优点:

  • 容易理解。

缺点:

  • 效率不高,队列需要记录各个垃圾对象的地址。

  • 清理后内存不连续,回存在内存碎片。

3.标记——压缩算法(移动式的)

因为清除算法会存在垃圾碎片,压缩算法(也称为标记整理算法)就是在清除算法上做改进,先将所有的存活对象压缩到内存的一端,按顺序排放,之后,记录垃圾对象的空间,就相当于清理,适用于老年代垃圾回收回收阶段算法,JVM,算法

 

优点:

  • 消除了内存分散,内存减半的缺点。

缺点:

  • 效率较低。

  • 移动对象时,牵扯到要更换引用地址。

  • 移动过程中,所有线程必须停止。

4.三种算法小结

垃圾回收回收阶段算法,JVM,算法

5.分代收集

        三种算法,没有一种算法可以替代其他的算法,它们都有自己的优缺点,所以诞生了分代收集的思想。年轻代垃圾对象较多,存活对象少,所以复制算法适用于年轻代,而标记清除和标记整理算法适用于老年代。

 

 

到了这里,关于垃圾回收回收阶段算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM---垃圾回收算法介绍

    目录 分代收集理论 三种垃圾回收算法 标记-清除算法(最基础的、基本不用) 标记-复制算法 标记-整理算法 正式因为jvm有了垃圾回收机制,作为java开发者不会去特备关注内存,不像C和C++。 优点 :开发门槛低、安全 缺点 :性能问题。c和c++可以自己操控内存等,性能更高

    2024年02月12日
    浏览(34)
  • 【JVM】垃圾回收算法

    标记-清除算法将垃圾回收分为两个阶段,标记阶段和清除阶段 在标记阶段首先通过GC Roots,标记所有从根节点开始的对象,未被标记的对象就是未引用的垃圾对象。然后,在清除阶段,清除未被标记的对象。 适合场景: 1、存活对象较多的情况下比较高效 2、使用于老年代

    2024年01月16日
    浏览(39)
  • JVM之三大垃圾回收算法

    提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 复制算法的核心就是, 将原有的内存空

    2024年02月14日
    浏览(49)
  • jvm垃圾回收相关的算法

    JVM主要通过以下几种方式来判断对象是否需要回收: 引用计数法:JVM通过引用计数器来判断对象的引用数量,当引用数量为0时,表示对象可以被回收。 可达性分析算法:JVM通过根对象(如栈中的引用、静态变量等)出发,对对象进行可达性分析,判断对象是否可被访问到,

    2024年02月02日
    浏览(58)
  • 【Java】图解 JVM 垃圾回收(一):GC 判断策略、引用类型、垃圾回收算法

    垃圾 是指运行程序中 没有任何引用指向的对象 ,需要被回收。 内存溢出 :经过垃圾回收之后,内存仍旧无法存储新创建的对象,内存不够溢出。 内存泄漏 :又叫 “ 存储泄漏 ”,对象不会再被程序使用了,但是 GC 又不能回收它们。例如:IO 流不适用了但是没有被 Close、

    2024年02月19日
    浏览(47)
  • 【JVM篇】有哪些垃圾回收算法

    主要分为下面2个阶段 标记阶段,将所有存活的对象进行标记。Java中使用可达性分析算法,从GC Root开始通过引用链遍历出所有存活对象 清除阶段,从内存中删除没有被标记的对象(非存活对象) 优点:实现简单,只需要在第一阶段给每个对象维护标志位,第二阶段删除对象

    2024年02月21日
    浏览(33)
  • JVM垃圾回收算法和CMS垃圾收集器

    目录 判断一个对象是否死亡? 1、引用计数法  2、可达性分析算法 三色标记 垃圾收集算法 1、分代收集理论  2、垃圾回收算法 标记-清除 标记-复制 标记-整理 CMS(Concurrent Mark Sweep)收集器 CMS垃圾收集器步骤 CMS垃圾收集器优缺点 垃圾收集需要完成的三件事情: 哪些内存需

    2024年02月10日
    浏览(45)
  • JVM学习 GC垃圾回收机制 (堆内存结构、GC分类、四大垃圾回收算法)

    🤖 作者简介: 努力的clz ,一个努力编程的菜鸟 🐣🐤🐥   👀 文章专栏: 《JVM 学习笔记》 ,本专栏会专门记录博主在学习 JVM 中学习的知识点,以及遇到的问题。   🙉 文章详情: 本篇博客是学习 【狂神说Java】JVM快速入门篇 的学习笔记,关于 GC垃圾回收机制 (堆内存结

    2023年04月19日
    浏览(42)
  • JVM-垃圾回收(标记算法,收集器)

    申明:文章内容是本人学习极客时间课程所写,文字和图片基本来源于课程资料,在某些地方会插入一点自己的理解,未用于商业用途,侵删。 原资料地址:课程资料 垃圾回收的基本原理 1 什么是垃圾? 在内存中,没有被引用的对象就是垃圾。 2 如果找到垃圾对象? 引用计

    2024年02月21日
    浏览(52)
  • 说一下 JVM 有哪些垃圾回收算法?

    标记无用对象,然后进行清除回收。 标记-清除算法(Mark-Sweep)是一种常见的基础垃圾收集算法,它将垃圾收集分为两个阶段: 标记阶段:标记出可以回收的对象。 清除阶段:回收被标记的对象所占用的空间。 标记-清除算法之所以是基础的,是因为后面讲到的垃圾收集算法

    2024年02月22日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包