垃圾收集算法

作者: 暮想sun | 来源:发表于2020-01-11 20:23 被阅读0次

标记

如果对象在进行可达性分析之后没有发现与GC Roots相连接的引用链,被第一次标记
执行finalize()方法,GC将在对F-Queue中的对象进行第二次标记

1.标记-清除算法

先标记所有需要回收的对象,在标记完成后统一回收所有被标记的对象
1.效率问题:标记和清除两个过程的效率都不高
2.空间问题:标记清除之后会产生大量不连续的内存碎片


2.标记-复制算法

将可用内存按容量分为大小相等的两块,每次只使用其中的一块。当这块的内存快使用完时,就将还存活的对象复制到另一块上,然后再把使用过的内存空间一次清理掉。


内存分为一块较大的Eden空间和两块Survivor空间。Hotspot虚拟机默认Eden和Survivor的比例是8:1,也就是新生代容量为90%。当回收时,将Eden和Survivor中还存活的对象一次性复制到另外一个Survivor空间。如果空间不够,将这些对象直接通过分配担保机制进入老年代。

3.标记-整理算法

先标记所有需要回收的对象,让所有存活的对象向一端移动,然后直接清掉端边界以外的内存。


4.分代收集算法

根据对象存活周期的不同,Java堆分为新生代老年代
在新生代中,每次垃圾收集时都会有大批对象死去,只有少量存活,可以选择复制算法。
老年代中对象存活率高、没有额外空间做担保,使用“标记-清除”或“标记-整理”算法进行回收。

相关文章

  • 第三章(二)GC

    本篇主要讲 垃圾收集算法 、 HotSpot的的算法实现 和 垃圾收集器。 垃圾收集算法 标记-清除算法 Mark...

  • JVM垃圾回收

    GC垃圾回收流程 垃圾收集算法 垃圾回收算法 引用类型 垃圾回收的时机 1.垃圾收集算法 (1).引用计数算法含义...

  • 4种垃圾收集算法及8种垃圾收集器

    文主要介绍4种垃圾收集算法及8种垃圾收集器: 垃圾收集算法 1、标记-清除算法(Mark-Sweep) “标记-清...

  • JVM学习笔记四【垃圾收集器】

    前文我们针对垃圾收集的区域,垃圾收集的对象,垃圾收集算法进行了介绍;而垃圾收集器就是收集算法的实现,如下是HotS...

  • JVM第四天-垃圾收集器

    一、垃圾收集器概述 垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、火车算法)的具体实现,不同...

  • JVM:这是一份全面 & 详细的 (GC)垃圾收集算法

    前言 不同的内存区域采用不同的垃圾收集算法 而不同垃圾收集算法决定了垃圾收集的效率 & 效果 本文将全面讲解垃圾收...

  • Jvm之CMS垃圾收集器

      这篇文章主要介绍JVM的CMS垃圾收集器,以及JVM提供的垃圾收集算法。 一、垃圾收集算法   JVM提供的三...

  • JVM堆的分配和回收

    1. 内存分配 现代收集器基本都采用分代收集算法 1.1 概述 垃圾收集 垃圾回收 垃圾收集器 GC 算法是内存回...

  • Java虚拟机垃圾收集算法实现

    垃圾收集算法实现 垃圾收集算法实现必须考虑运行效率。 对象存活判定算法实现 对象存活判定算法都使用可达性分析算法实...

  • 垃圾收集

    垃圾收集算法 标记清除法:循环应用 引用计数法:空间碎片 复制算法:新生代使用该算法进行垃圾收集 标记压缩算法:老...

网友评论

    本文标题:垃圾收集算法

    本文链接:https://www.haomeiwen.com/subject/nrebactx.html