通过 4 个问题,来了解浏览器垃圾回收的过程,后面会逐一解答:
浏览器怎么进行垃圾回收?
浏览器中不同类型变量的内存都是何时释放?
哪些情况会导致内存泄露?如何避免?
weakMap weakSet 和 Map Set 有什么区别?
什么是垃圾数据?
生活中你买了一瓶可乐,喝完之后可乐瓶就变成了垃圾,应该被回收处理。
同样地,我们在写 js 代码的时候,会频繁地操作数据。
在一些数据不被需要的时候,它就是垃圾数据,垃圾数据占用的内存就应该被回收。
变量的生命周期
比如这么一段代码:
let dog = new Object()
let dog.a = new Array(1)
当 JavaScript 执行这段代码的时候,
会先在全局作用域中添加一个dog 属性,并在堆中创建了一个空对象,将该对象的地址指向了 dog。
随后又创建一个大小为 1 的数组,并将属性地址指向了 dog.a。此时的内存布局图如下所示:

如果此时,我将另外一个对象赋给了 a 属性,代码如下所示:
dog.a = new Object
浏览器垃圾回收与内存泄漏详解

本文详细介绍了浏览器中的垃圾回收机制,包括垃圾数据的定义、变量生命周期、垃圾回收算法如标记-清除、分代收集等。同时,讨论了何时进行垃圾回收、不同类型的变量内存释放时机以及内存泄漏的原因和避免方法。特别提到了闭包不会导致内存泄漏,并对比了weakMap、weakSet与Map、Set的区别,旨在帮助理解JavaScript内存管理。
最低0.47元/天 解锁文章
963

被折叠的 条评论
为什么被折叠?



