GC算法

GC常用的算法有四个:

  1. 复制算法
  2. 引用计数法
  3. 标记清除法
  4. 标记压缩法

 

1.复制算法:

主要用的复制算法是在新生区(伊甸园、幸存0区、幸存1区)

每次GC都会将伊甸园区活的对象移到幸存区中;一旦伊甸园区被GC之后就会是空的。

幸存区中哪个区为空,另外一个区就会把活得对象转移进去。

默认当一个对象经历15次GC之后就会进入老年区。

 

2.引用计数法

会将对象做标记,如用用到了就会计数。然后计数为0就会被清除。

 

3.标记清除法

第一次扫描这些对象,用到了就经行标记。第二次扫描对没有标记的对象进行清除。

 

4.标记压缩法

先进行多次的标记清除,然后对其进行压缩。

 

总结

内存效率:复制算法>标记清除算法>标记压缩算法

内存整齐度:复制算法=标记压缩算法>标记清除算法

内存利用率:标记压缩算法=标记清除算法>复制算法

 

GC:分代收集算法

新生代

  • 存活率低
  • 复制算法

老年代

  • 区域大
  • 标记清除(内存碎片不是太多) + 标记压缩混合 实现

 

posted @   不想当将军的好士兵  阅读(1000)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示