引用计数
通过统计对象引用数(retainCount)决定是否释放内存(引用数为0时回收)
优点: 实现简单,可以立即回收不再使用的对象。
缺点: 无法处理循环引用,需要开发者额外注意内存管理。标记清除
核心思想:可达性(Reachability),通过设置根对象(root object)作为起点,垃圾回收器会定期从根开始查找所有被引用的对象
实现过程:
1.从根对象(root object)开始遍历所有可达对象
2.对可达对象进行标记
3.清除未被标记的对象
根对象特性:
1.在浏览器环境中通常是window对象(global object)
2.永远不能被销毁,否则会导致整个应用崩溃
循环引用处理:能有效解决循环引用问题,因为只要从根对象不可达就会被清除**标记整理 **
目的:解决标记清除产生的内存碎片问题
工作原理:
1.在清除阶段同时移动存活对象
2.使存活对象集中在连续内存空间
3.空闲空间也保持连续
优势:
避免内存碎片化
提高大内存分配的效率分代收集
增量收集
闲时收集
常见的GC算法
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 学习了 GC 算法的相关概念之后,我们将介绍在 JVM 中这些算法的具体实现。首先要记住的是,大多数 JVM 都需...