JavaScript 是一门动态类型的编程语言,它使用自动垃圾回收机制帮助开发人员管理内存。垃圾回收是一种自动化的内存管理过程,用于检测不再被程序使用的对象,并释放它们所占用的内存空间,以便其他对象可以使用。
垃圾回收器的主要目标是识别和收集不再被引用的对象。当一个对象不再被任何引用所指向时,它就可以被判定为垃圾。JavaScript 引擎使用的主要垃圾回收策略是基于标记清除算法。
标记清除算法通过以下步骤来回收垃圾对象:
- 标记阶段(Marking Phase):从根对象开始,通过可访问的引用遍历对象图并标记所有可以访问到的对象。根对象可以是全局对象、当前执行上下文中的变量、活动函数调用栈中的变量等。所有可达对象都被标记为活动对象,未被标记的对象则被视为垃圾。
以下是一个简单的示例,演示了标记阶段的过程:
// 创建一个对象引用关系
let obj1 = {
}