【JVM基础10】——垃圾回收-JVM垃圾回收算法有哪些?

目录

  • [1- 引言:垃圾回收算法](#1- 引言:垃圾回收算法)
  • [2- ⭐核心:三种垃圾回收算法](#2- ⭐核心:三种垃圾回收算法)
    • [2-1 标记清除法](#2-1 标记清除法)
    • [2-2 标记整理算法](#2-2 标记整理算法)
    • [2-3 复制算法](#2-3 复制算法)
  • [3- 小结](#3- 小结)
    • [3-1 JVM 常见的垃圾回收算法有哪些?](#3-1 JVM 常见的垃圾回收算法有哪些?)

1- 引言:垃圾回收算法

JVM 在识别了对象什么时候可以被回收之后,就需要执行垃圾回收算法对垃圾进行回收。JVM 中主要有以下三种垃圾回收算法

  • ① 标记清除算法
  • ② 复制算法
  • ③ 标记整理算法

2- ⭐核心:三种垃圾回收算法

2-1 标记清除法

标记清除算法将垃圾回收分为了 2 个阶段,分别是 标记清除

  • 1-标记: 对根据可达性分析算法进行标记(标记的是存活的对象)
  • 2-清除: 对这些标记位可回收的内容进行垃圾回收

如图所示,先经过可达性分析 标记出存活的对象,之后再对未标记的对象进行垃圾回收。

优缺点
  • 优点:标记和清除的速度较快
  • 缺点:碎片化较为严重,标记清除后的内存出现不连续。因此不连续的空间可能导致占用内存大的数组无法存储,因此该算法不常用。

2-2 标记整理算法

一般老年代的垃圾回收器会采用复制算法。

  • 标记整理算法类似于标记清除算法,也是先对存活的对象进行标记后清除。额外增加了空间移动的操作,将剩余存活的对象移动到连续的存储空间内。
优缺点
  • 优点:解决了标记清除算法的碎片化的问题
  • 缺点:标记整理算法多了一步对内存位置的移动,其效率受到一定影响。

2-3 复制算法

一般年轻代的垃圾回收器会采用复制算法。

  • 复制算法,将内存大小分为两个大小相同的区域。
  • ①标记阶段:标记存活的对象
  • ②移动:将存活的对象移动到另一块内存中。
  • ③清理:最后对移动后的待回收内存进行垃圾回收。
优缺点
  • 优点:在垃圾对象多的情况下,效率较高。清理后,内存无碎片
  • 缺点:分配 2 块内存空间,在同一时间只能使用一半,内存的使用效率较低。

3- 小结

3-1 JVM 常见的垃圾回收算法有哪些?

相关推荐
罗超驿8 分钟前
15.LeetCode 30. 串联所有单词的子串(Java):滑动窗口+哈希表详解
算法·leetcode
Marianne Qiqi8 分钟前
非hot100的力扣算法题
数据结构·算法·leetcode
CC数学建模23 分钟前
2026第八届中青杯全国大学生数学建模竞赛C题:情绪维度耦合约束的脑电信号情绪识别 (1)完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
Dillon Dong25 分钟前
【风电控制】双馈风机网侧高低穿控制策略——从VrtCal信号处理到状态机逻辑的完整解析
算法·变流器·风电控制·dfig
下午写HelloWorld26 分钟前
同态加密(Homomorphic Encryption, HE)
人工智能·算法·密码学·同态加密
CC数学建模26 分钟前
2026第八届中青杯全国大学生数学建模竞赛B题:AI生成内容的质量评估与参数优化完整思路、代码、模型、文章,全网首发高质量分享!
python·算法·数学建模
sheeta199827 分钟前
LeetCode 每日一题笔记 日期:2026.06.04 题目:3751. 范围内总波动值 I
笔记·算法·leetcode
lightqjx38 分钟前
【算法】数据结构_单调栈
数据结构·算法·单调栈
Promise微笑40 分钟前
洞察无形:红外热像仪应用场景与高性价比之选
人工智能·物联网·算法
8Qi81 小时前
LeetCode 746:使用最小花费爬楼梯 —— 题解笔记
java·笔记·算法·leetcode·动态规划