1.what?
垃圾回收机制:定期找到没有用的变量,释放存储该变量的代码段
2.why?
释放内存,系统运行更加流畅。
3.how?
1.标记清除法(常用)
1.1:标记当前所有的变量
1.2:删除【全局变量】和【正在引用局部变量】的标记,剩下带有标记的变量被垃圾回收
2.引用计数(不常用)
function fn() {
const obj1 = new Object() // new Object 在堆内存中创建了一个对象1 {} 这个值被赋值给obj1 于是引用次数 + 1
const obj2 = new Object() // new Object 在堆内存中创建了一个对象2 {} 这个值被赋值给obj2 于是引用次数 + 1
obj1.a = obj2; // obj2 被赋值给 obj1的a属性 于是对象1的引用次数 1+1 = 2
obj2.a = obj1; // obj1 被赋值给 obj2的a属性 于是对象2的引用次数 1+1 = 2
}
**闭包变量被外部引用时, 会造成内存泄漏, 在不使用时将其设置为null, 释放内存空间**