GC算法
GC常用的算法有四个:
- 复制算法
- 引用计数法
- 标记清除法
- 标记压缩法
1.复制算法:
主要用的复制算法是在新生区(伊甸园、幸存0区、幸存1区)
每次GC都会将伊甸园区活的对象移到幸存区中;一旦伊甸园区被GC之后就会是空的。
幸存区中哪个区为空,另外一个区就会把活得对象转移进去。
默认当一个对象经历15次GC之后就会进入老年区。
2.引用计数法
会将对象做标记,如用用到了就会计数。然后计数为0就会被清除。
3.标记清除法
第一次扫描这些对象,用到了就经行标记。第二次扫描对没有标记的对象进行清除。
4.标记压缩法
先进行多次的标记清除,然后对其进行压缩。
总结
内存效率:复制算法>标记清除算法>标记压缩算法
内存整齐度:复制算法=标记压缩算法>标记清除算法
内存利用率:标记压缩算法=标记清除算法>复制算法
GC:分代收集算法
新生代
- 存活率低
- 复制算法
老年代
- 区域大
- 标记清除(内存碎片不是太多) + 标记压缩混合 实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)