js 垃圾回收 GC Memory Management closure V8 Garbage Collector
js GC / js Garbage Collector
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management
closure 闭包
- 闭包的优缺点
优点:
① 减少全局变量;
② 减少传递函数的参数量;
③ 封装;
缺点:
① 使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等
内存泄漏的解决方法
把那些不需要的, 但是垃圾回收又收不走的变量, 赋值为null,然后让垃圾回收回收走;
- 引用计数
const log = console.log;
// [1, 2, 3, 4] 是一个值, heap 堆上的一块内存空间的地址
// 引用计数 1 次, arr 对这个值的引用 1 次
let arr = [1, 2, 3, 4];
log('hello world', arr);
setTimeout(() => {
// 引用计数 0 次, 值赋值 null ????, arr 对这个值的引用 0 次
// 触发自动 GC
arr = null;
log(`GC`)
}, 3000);
- 标记
GC & Memory Management & Memory Leak & Garbage Collector
内存泄漏 & 垃圾收集器
https://zh.javascript.info/garbage-collection
https://javascript.info/garbage-collection
V8 GC
https://v8.dev/blog/trash-talk