JVM中的垃圾收集算法

标记-清除算法

首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未被标记的对象。标记过程就是对象是否属于垃圾的判定过程

缺点

  • 第一个是执行效率不稳定

  • 第二个是内存空间的碎片化问题

标记-复制算法

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

优点:

  • 实现简单,运行高效

缺点:

  • 可用内存缩小为了原来的一半

标记-整理算法

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

优点:

  • 可以解决内存碎片问题,并且不需要暂停应用程序运行

缺点:

  • 需要大量的时间和空间:标记整理算法需要大量的时间和空间来进行对象移动和地址更新操作。

  • 可能会导致性能问题:由于需要遍历整个内存空间,标记整理算法在处理大量内存和大量对象时,可能会导致性能问题。

相关推荐
阳明山水24 分钟前
CEDAR双重解耦实现决策与干预分离
人工智能·深度学习·算法·机器学习·架构
Zootopia6261 小时前
美国载人飞船Crew-13明晚发射!
人工智能·算法·机器学习·数学建模·无人机·创业创新·信息与通信
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】ChatSDK 集成测试概述
jvm·c++·人工智能·学习·面试·集成测试·sdk
Joe_Wang51 小时前
【从0到1学习JVM · 14】堆内存各区域分工与Xms和Xmx设为一样的真相
java·jvm·学习·垃圾回收
zhangfeng11331 小时前
qjlDim 含义 TurboQuant QJL Quantized Johnson-Lindenstrauss,量化JL随机投影
人工智能·算法·ai编程·npu
HwJack201 小时前
【HarmonyOS开发小实践】HarmonyOS GC 引用计数 vs 对象追踪,三种回收算法
jvm·算法·harmonyos
blxr_1 小时前
力扣hot100前k个高频元素https://leetcode.cn/problems/top-k-frequent-elements/
算法·leetcode·职场和发展
longlongzihan11 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先
封印师请假去地球钓鱼11 小时前
边解边变的问题:从“决策依赖“一词出发
人工智能·算法
今晚打老虎12 小时前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法