垃圾回收算法有几种类型? 他们对应的优缺点又是什么?

常见的垃圾回收算法有:

标记-清除算法、复制算法、标记-整理算法、分代收集算法

标记-清除算法

标记—清除算法包括两个阶段:“标记”和“清除”。 标记阶段:确定所有要回收的对象,并做标记。 清除阶段:将标记阶段确定不可用的对象清除。

缺点:

标记和清除的效率都不高。
会产生大量的碎片,而导致频繁的回收。

复制算法

内存分成大小相等的两块,每次使用其中一块,当垃圾回收的时候, 把存活的对象复制到另一块上,然后把这块内存整个清理掉。

缺点:

需要浪费额外的内存作为复制区。
当存活率较高时,复制算法效率会下降。

标记-整理算法

标记—整理算法不是把存活对象复制到另一块内存,而是把存活对象往内存的一端移动,然后直接回收边界以外的内存。

缺点: 算法复杂度大,执行步骤较多

分代收集算法

目前大部分 JVM 的垃圾收集器采用的算法。根据对象存活的生命周期将内存划分为若干个不同的区域。一般情况下将堆区划分为新生代( Young Generation 和老年代( Tenured Generation ),永久代( Permanet Generation )。

老年代的特点是每次垃圾收集时只有少量对象需要被回收,而新生代的特点是每次垃圾回收时都有大量的对象需要被回收,那么就可以根据不同代的特点采取最适合的收集算法。

Young:存放新创建的对象,对象生命周期非常短,几乎用完可以立即回收,也叫 Eden 区。

Tenured: young 区多次回收后存活下来的对象将被移到 tenured 区,也叫 old 区。

Perm:永久带,主要存加载的类信息,生命周期长,几乎不会被回收。

缺点: 算法复杂度大,执行步骤较多。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

(0)

相关推荐

  • 深度揭秘垃圾回收底层,这次让你彻底弄懂她

    Java 与 C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的高墙 ---<深入理解Java虚拟机> 我们知道手动管理内存意味着自由.精细化地掌控,但是却极度依赖于开发人员的水平和细 ...

  • JVM垃圾回收算法

    后端开发技术 来自:后端开发技术 谈到Java不得不谈GC,谈到GC不得不谈垃圾回收算法 对象已死吗 在进行垃圾回收之前,第一件事就是判断哪些对象还存活着,哪些对象已死需要被回收. 1.引用计数算法 ...

  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比

    谈垃圾回收器之前,要先讲讲垃圾回收算法,以及JVM对垃圾的认定策略,JVM垃圾回收器是垃圾回收算法的具体实现,了解了前面的前置知识,有利于对垃圾回收器的理解. 什么是垃圾? 垃圾,主要是指堆上的对象, ...

  • Java虚拟机垃圾回收(三) 7种垃圾收集器

    主要特点 应用场景 设置参数 基本运行原理 在<Java虚拟机垃圾回收(一) 基础>中了解到如何判断对象是存活还是已经死亡?在<Java虚拟机垃圾回收(二) 垃圾回收算法>了解 ...

  • 【眩晕!中医常见眩晕6种类型,治疗眩晕常...

    [眩晕!中医常见眩晕6种类型,治疗眩晕常用中成药方]欢迎分享收藏! 中医认为眩是眼花,晕是头晕.二者常同时并见.故统称为'眩晕'.轻者闭目即止:重者如坐车船,旋转不定,也常伴有恶心.呕吐.汗出等. 1 ...

  • 致敬母亲节:这三种类型的母亲,养出来的孩子会有大出息!

    德国教育学家福禄贝尔说过,国民的命运与其说是操纵在掌权者手中,倒不如说是掌握在母亲手中. 母亲,早期养育的重要对象 一般家庭中,母亲都是孩子的主要照料者,承担了儿童的吃穿用度,以及喂养等多项任务.对于 ...

  • 焦虑症也分种类,来看看你属于哪一种类型的焦虑症

    许多人有时会感到焦虑,这是正常的. 然而,经常感到焦虑,过份或持续地焦虑,便有可能是患上焦虑症.焦虑症是一种心理疾病,它可以使人在生活中充满极度及经常的忧虑,紧张和经常的恐惧.若不进行治疗,情况可能会 ...

  • 因缘相聚的五种类型

    因缘相聚的五种类型

  • 手脚心发热的5种类型。

    第一种脾胃湿热,口臭便秘,舌红苔黄.用三黄片  藿香清胃胶囊./藿朴夏苓汤. 第2种阴虚热汗,烦,全身不发热,手脚心发热.用知柏地黄丸. 第3种.脾虚有湿,补中益气丸加二陈汤. 第4种阳虚出冷汗,用右 ...

  • 肿瘤药物治疗三种类型

    2019年,化疗药物在国内肿瘤药物市场的占比为73%,靶向药物占比为23%,免疫治疗药物的占比仅为4%(表1).尼莫司汀.多柔比星.长春碱等化疗药物是目前国内肿瘤化疗药物治疗中的主要类别. 1化疗药物 ...