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

15.JVM垃圾收集算法

一、垃圾收集算法

1.分代收集理论

    分代收集理论是JAVA虚拟机进行垃圾回收的一种思想,根据对象存活周期的不同将内存分成不同的几个区域;一般将JAVA堆内存分为新生代和老年代;根据每个分代特点选择不同的垃圾收集器;

    在新生代中,每次收集的对象(超过99%)都会立即被清理掉,采用复制算法,每次只需要付出很少的复制成本就可以完成垃圾收集;

    在老年代中,对象的存活几率较高,存活周期较长,并且没有额外的空间进行分配担保,所以必须选择标记-整理或者标记-清除的算法;注意这种算法效率较低,会是复制算法的10倍以上;

2.标记复制算法

为了解决效率问题,采用复制算法,将堆内存分成2部分,每次使用其中一块,当这块使用完了之后,就将少数存活的对象复制到另外一块区域,之前使用的区域则全部删除;

右侧为未使用区域,左侧 蓝色存活对象; 灰色回收对象,白色未使用对象,当进内存使用到一半时(左侧用满),将存活的对象复制到右侧,左侧全部清空

复制整理后

左侧全部为未使用区域,右侧为复制整理后的存活对象

3.标记-清除算法

分为标记和清除2个阶段,标记存活的对象,统一回收未被标记的对象;

问题:1.效率低下(若标记对象太多,效率不高)

           2.空间问题(标记清除后会产生很多空间碎片)

标记清除之前

标记清除之后

4.标记-整理算法

    根据老年代的特点出的一种标记算法,标记过程仍然和标记-清除算法一样,后续不是直接清除未标记的对象,而是让存活的对象统一移动到内存一端,将另一端清除

标记整理之前

标记整理之后

http://www.lryc.cn/news/463016.html

相关文章:

  • 软件工程:图书管理系统甘特图
  • 视频的编解码格式
  • 网络资源模板--Android Studio 实现简易新闻App
  • LabVIEW提高开发效率技巧----离线调试
  • 6N137S1取反电路图
  • Nullinux:一款针对Linux操作系统的安全检测工具
  • 学会这 5 个 AI 神器做字体设计,保证让你私单接到爆!
  • 《Vue3 踩坑》expose 和 defineExpose 暴露属性或方法注意事项
  • 10.13论文阅读
  • 六西格玛黑带项目:TBX-02无人机飞行稳定性提升——张驰咨询
  • git clone 国内镜像
  • 【服务器虚拟化】
  • 【RAG】aiops第一名方案-EasyRAG:自动网络运营的高效检索增强生成框架
  • 3款备受好评的电脑数据恢复软件,赶紧收藏以备不时之需
  • .net core 实现多线程方式有哪些
  • 《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化
  • 【Linux】内存文件系统的I/O、重定向
  • 力扣10.18
  • cs木马图形化界面出现问题处理
  • 数据结构与算法 - 树 #数的概念 #二叉树 #堆 - 堆的实现/堆排序/TOP-K问题
  • Git推送被拒
  • Jmeter进行http接口测试
  • 工业相机详解及选型
  • RAID 矩阵
  • 详细分析Redisson分布式锁中的renewExpiration()方法
  • 实验3,网络地址转换
  • Java 中的 String 字符串是不可变的
  • 计算机网络架构实例
  • Chrome与Firefox浏览器HTTP自动跳转HTTPS的解决方案
  • 众数信科荣登“2024 CHINA AIGC 100”榜单