当前位置: 首页 > news >正文

JVM 有哪些垃圾回收器

垃圾收集算法

标记-复制算法(Copying): 将可用内存按容量划分为两个区域,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面, 然后再把已使用过的内存空间一次清理掉。

标记-清除算法(Mark-Sweep): 算法分为“标记” 和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记 的对象。

标记-整理算法: 标记阶段和标记清除算法一样,也是先标记出所需要回收的对象,然后让所有存活的对象移动到另一端,然后直接清理掉边界以外的内存。

分代收集算法(Generational Collection): 把Java堆分为新生代和老年代, 这样就可以根据各个年代的特点采用最适当的收集算法

Young区:复制算法(对象在被分配之后,可能生命周期比较短,Young区复制效率比较高)

Old区:标记清除或标记整理(Old区对象存活时间比较长,复制来复制去没必要,不如做个标记再清理)

标记清除:缺点

会产生大量不连续的内存碎片,造成内存浪费,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。

优点:速度块,不需要移动和复制对象

复制算法:缺点

浪费一半的内存空间

复制对象会造成性能和时间上的消耗<

http://www.dtcms.com/a/112034.html

相关文章:

  • 【2023】ORIGIN或MATLAB 颜色图,等高图,颜色条——需要拟合补全中间的颜色
  • 算法--最长上升子序列
  • 京东零售首次公开!6B参数时序大模型实现20000款商品自动补货预测
  • Java 搭建 MC 1.18.2 Forge 开发环境
  • 《探索边缘计算:重塑未来智能物联网的关键技术》
  • agent 入门
  • ARM-外部中断,ADC模数转换器
  • Vue3学习二
  • 【Node】一文掌握 Express 的详细用法(Express 备忘速查)
  • 【面试篇】Mysql
  • DHCP之中继 Relay-snooping及配置命令
  • Python_level1_字符串_11
  • 给项目中的用户头像,添加用户的历史头像记录功能
  • 深入理解SQL中的<>运算符:不等于的灵活运用
  • C++20的协程简介
  • 轨迹速度聚类 实战
  • 【C++代码整洁之道】第九章 设计模式和习惯用法
  • VSCode运行,各类操作缓慢,如何清理
  • anaconda3/conda依赖安装、环境配置、关联指定python版本
  • 性能测试之jmeter的基本使用
  • [C++面试] new、delete相关面试点
  • 从软件分层架构视角理解英语学习
  • 为什么有的深度学习训练,有训练集、验证集、测试集3个划分,有的只是划分训练集和测试集?
  • 【YOLO系列(V5-V12)通用数据集-X光包裹内违禁品检测数据集】
  • Java 大视界 -- Java 大数据在智能供应链库存优化与成本控制中的应用策略(172)
  • AI平台初步规划实现和想法
  • 20信号和槽_connect函数的用法(1)
  • 隐私投资的收益大于成本
  • 【更新至2024年】2000-2024年各省专利侵权案件结案数数据
  • 基于大模型预测不稳定性心绞痛的多维度研究与应用