美文网首页
垃圾收集算法

垃圾收集算法

作者: 面向对象架构 | 来源:发表于2022-12-13 11:48 被阅读0次

GC 定义

  • 部分收集 Partial GC:目标不是完整收集整个 Java 堆的垃圾收集,又分为:
    • 新生代收集 Minor GC/Young GC:目标只是新生代的垃圾收集。
    • 老年代收集 Major GC/Old GC:目标只是老年代的垃圾收集。目前只有 CMS 会有单独收集老年代的行为。
    • 混合收集 Mixed GC:目标是收集整个新生代以及部分老年代的垃圾收集。目前只有 G1 收集器会有这种行为。
  • 整堆收集 Full GC:收集整个 Java 堆和方法区的垃圾收集。

一、分代收集理论

一般至少把 Java 堆划分为新生代和老年代两个区域。

  • 绝大多数对象都是朝生夕死的。
  • 熬过越多次垃圾收集过程的对象就越难以消亡。
  • 跨代引用相对于铜带引用来说仅占极少数。

二、标记 - 清除算法

首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象。也可以反过来。

缺点:

  1. 执行效率不稳定。
    标记和清除两个过程的执行效率随对象数量增长而降低。
  2. 内存空间的碎片化。

三、标记 - 复制算法

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

没有内存碎片问题。

缺点:

  1. 内存空间浪费。将可用内存缩小为原来的一半。
  2. 对象存活率较高时,需要进行较多的复制操作,效率降低。

四、标记 - 整理算法

标记过程与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向内存空间一段移动,然后直接清理掉边界以外的内存。

相关文章

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