常见的GC算法

  • 引用计数
    通过统计对象引用数(retainCount)决定是否释放内存(引用数为0时回收)
    优点: 实现简单,可以立即回收不再使用的对象。
    缺点: 无法处理循环引用,需要开发者额外注意内存管理。

  • 标记清除
    核心思想:可达性(Reachability),通过设置根对象(root object)作为起点,垃圾回收器会定期从根开始查找所有被引用的对象
    实现过程:
    1.从根对象(root object)开始遍历所有可达对象
    2.对可达对象进行标记
    3.清除未被标记的对象
    根对象特性:
    1.在浏览器环境中通常是window对象(global object)
    2.永远不能被销毁,否则会导致整个应用崩溃
    循环引用处理:能有效解决循环引用问题,因为只要从根对象不可达就会被清除

  • **标记整理 **
    目的:解决标记清除产生的内存碎片问题
    工作原理:
    1.在清除阶段同时移动存活对象
    2.使存活对象集中在连续内存空间
    3.空闲空间也保持连续
    优势:
    避免内存碎片化
    提高大内存分配的效率

  • 分代收集

  • 增量收集

  • 闲时收集

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容