浏览器的垃圾回收及内存泄漏的情况

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

通过 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值