【JVM篇】有哪些垃圾回收算法

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


【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

🌹4种GC算法

🛸标记清除算法

主要分为下面2个阶段

  • 标记阶段,将所有存活的对象进行标记。Java中使用可达性分析算法,从GC Root开始通过引用链遍历出所有存活对象
  • 清除阶段,从内存中删除没有被标记的对象(非存活对象)

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

🔎优缺点

优点:实现简单,只需要在第一阶段给每个对象维护标志位,第二阶段删除对象即可
缺点:

  • 碎片化问题:由于内存是连续的,所以在对象被删除后,内存中会出现很多细小的可用内存单元。如果我们需要的是一个比较大的空间,很有可能这些内存单元的大小过小从而无法分配
    【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
  • 分配速度慢:由于内存碎片的存在,需要维护一个空闲链表,极有可能需要 多次遍历到链表的结尾 才能获得合适的内存空间
    【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

🛸复制算法

  1. 准备2块空间From空间和To空间,每次在对象分配阶段,只能使用其中的一块空间(From空间)
  2. 在垃圾回收GC阶段,将From中存活对象复制到To空间
  3. 将2块空间的名字(From和To)互换
  4. 重复上述操作

🔎优缺点

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

🛸标记整理算法

也叫标记压缩算法,是对标记清理算法中容易产生垃圾碎片问题的一种解决方法
主要分为2个阶段

  1. 标记阶段,将所有存活的对象进行标记。Java中使用可达性分析算法,从GC Root开始通过引用链遍历出所有存活对象
  2. 整理阶段,将存活对象移动到堆的一端,清理掉存活对象的内存空间

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

🔎优缺点

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

🍔分代垃圾回收算法(G1垃圾回收器)

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
分代回收时,创建出来的对象,首先会被放入到Eden伊甸园区。
【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

随着对象在Eden区越来越多,新创建的对象已经无法放入,就会触发年轻代的GC,称为Minor GC或者Young GC

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
Minor GC会把Eden区和From区中需要回收的对象进行回收,把没有回收的对象放入到To区中,这样子,新创建的对象就能分到Eden区了

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
接下来,S0区会变成To区,S1区会变成From区。
当Eden区满的时候 再向里面放入对象,仍然会发送Minor GC

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

此时会回收Eden区和S1区的对象,并把Eden区和S1区中存活的对象放入到S0
【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
注意:每次Monor GC中都会记录它的年龄,初始值为0,每次GC完后加1
如果Minor GC后的对象年龄达到阈值(最大15,默认值和垃圾回收器有关),会晋升到老年代中

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
如果老年代的空间不足,无法放入新的对象,先尝试Minor GC
【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
如果还是不足,就会触发Full GC,Full GC会对整个堆进行垃圾回收
【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java
如果Full GC仍然无法回收掉老年代的对象,那么当对象继续放入到老年代的时候,就会抛出Out Of Memory异常

🔎优缺点

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

📒小结

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java

在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

【JVM篇】有哪些垃圾回收算法,JVM,jvm,算法,java文章来源地址https://www.toymoban.com/news/detail-831590.html

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

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

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

相关文章

  • 【JVM】JVM 垃圾回收算法

    目前JVM中有三种常见的垃圾回收算法,分别是:标记清除、标记整理和复制,这三种垃圾回收算法各有优缺点,下面逐一介绍。 在读本篇文章中,如果对JVM中哪个是垃圾,哪个不是垃圾,JVM到底是怎么知道的,请先读下面这篇文章 【JVM】JVM 判断对象存活算法(引用计数算法

    2024年02月09日
    浏览(41)
  • JVM基础(5)——JVM垃圾回收算法

    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖,挖的越深,基础越扎实! 阶段1、深入多线程 阶段2、深入多线程设计模式 阶段3、深入juc源码解析

    2024年02月02日
    浏览(34)
  • JVM——垃圾回收(垃圾回收算法+分代垃圾回收+垃圾回收器)

    只要一个对象被其他对象所引用,就要让该对象的技术加1,某个对象不再引用其,则让它计数减1。当计数变为0时就可以作为垃圾被回收。 有一个弊端叫做循环引用,两个的引用计数都是1,导致不能作为垃圾回收,会造成内存泄露。 java虚拟机没有采用该算法。 该算法需要

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

    2023年05月29日
    浏览(57)
  • JVM---垃圾回收算法介绍

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

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

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

    2024年01月16日
    浏览(32)
  • jvm垃圾回收相关的算法

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

    2024年02月02日
    浏览(51)
  • JVM之三大垃圾回收算法

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

    2024年02月14日
    浏览(38)
  • 【Java JVM】垃圾回收

    当前大部分的垃圾收集器都遵循着 “分代收集” (Generational Collection) 的理论进行设计的, 建立在 2 个分代假设之上 弱分代假说 (Weak Generational Hypothesis): 绝大多数对象都是朝生夕灭的 强分代假说 (Strong Generational Hypothesis): 熬过越多次垃圾收集过程的对象就越难以消亡 根据这

    2024年03月14日
    浏览(36)
  • JVM垃圾回收算法和CMS垃圾收集器

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

    2024年02月10日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包