美文网首页
垃圾收集算法

垃圾收集算法

作者: 简书徐小耳 | 来源:发表于2018-11-19 13:13 被阅读0次

本文只讨论垃圾收集的算法的思想

垃圾收集器 是按照标记存活对象实现的,而标记死亡对象 应该需要扫描所有对象,标记存活对象只需要从gcroot出发即可吧

1.标记-清除 标记死亡对象有点问题 需要扫描所有对象

  • 标记阶段:标记处所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。我们是通过对象搜索其与GC Roots是否有引用链,如果没有则暂定为不可达(后续会根据其是否覆盖了finalize方法来判断是否需要二次标记)
  • 清除:把标记的对象进行回收

缺点:标记和清除的效率都慢,其次会造成堆内存空间碎片化,从而导致无法分配大对象,进而引起gc。

2.复制算法(回收新生代)

  • 为了解决效率和碎片问题,将内存划分为等分的两块,每次只使用一块,当一块用完了,就将还存活着的对象复制到另一块上面,然后把已使用的内存清理掉。
    缺点:内存使用率低下,所以目前的算法都是把新生代分为1:1:8。如果在老年代, 复制算法在整体对象存活率较高的情况下就要执行较多的复制操作,从而导致效率变低。

标记-整理算法(回收老年代)

-类似于标记-清除,在回收对象的时候,是让所有存活的对象都移向一端,然后直接清理掉端边界以外的内存。即所谓的压缩

分代收集法

  • 根据内存对象存活周期把对象分为新生代和老年代,其中复制算法清理新生代,标记-整理清理老年代

相关文章

  • 第三章(二)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/bbiofqtx.html