js闭包/内存泄露案例/查看在v8下内存泄露

目录

一、直接上代码

 二、如何验证


v8是什么看这里

浏览器工作原理和V8引擎_ispaomoya博客-CSDN博客

一、直接上代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>内存泄露</title>
</head>

<body>
    <script>
        function fun() {
            let arr = new Array(1024 * 1024).fill(1)
            // 这里形成一个闭包
            return function () {
                console.log(arr.length);
            }
        }
        // 这是为过程一:为了看到效果,这里延迟执行
        let n = []
        for (let i = 0; i < 100; i++) {
            setTimeout(() => {
                n.push(fun())
            }, i * 100)

        }
        // 这里为过程二:这里延迟删除,会发生什么?
        // v8会根据自己的垃圾回收时间,在某个时间一次性删除没有引用的
        setTimeout(() => {
            // 这里写了50,上面是push了100,那么就是回收一半
            for (let i = 0; i < 50; i++) {
                setTimeout(() => {
                    n.pop()
                }, i * 100)
            }
            // n = null//如果直接设为null,那么在某个时间段直接降下来
        }, 20000)

    </script>
</body>

</html>

 二、如何验证

打开谷歌浏览器,按f12,点击performonce,点击左上角灰暗的实心圆形,录制30秒

(录制一开始后,这里建议右键点击谷歌浏览器左上角刷新按钮,选择清空缓存)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值