JS的内存泄漏问题

本文探讨了JavaScript中的内存泄漏问题,包括什么是内存泄漏、JS的内存管理机制、常见的内存泄漏场景如意外全局变量、定时器和闭包,以及如何使用Chrome进行内存泄漏的调试。了解这些有助于避免网页因内存泄漏导致的反应迟缓和崩溃。
摘要由CSDN通过智能技术生成

JS中存在的内存泄漏

  • 什么是内存泄漏
  • JS的内存管理机制
  • 常见的内存泄漏
  • chrome查询内存是否泄漏
  • 参考博文

内存泄漏最终将导致页面反应迟缓,崩溃,高延迟

1. 什么是内存泄漏

我们知道内存是有限的,比如8G,16G, 当我们创建了一些变量,其就会在内存中的对应位置 (堆栈的概念)

栈内存一般存储基础的数据类型(Number String Null undefined Boolean Symbol)

堆内存一般存储引用类型,包括对象Object和数组Array

但是我们如果一味的往里放,再大的内存都会放满,所以一些不用的变量就会被回收。

举个例子: 家里面的仓库再大,空间也有限,总不可能一直往里塞东西吧,哈哈哈。当仓库(内存)装满的时候,还要继续往里面装,就存在内存泄漏的问题。

2. JS的内存管理机制

为了让仓库能一直放,我们在打扫卫生的时候总会扔掉一些不要用的东西,在JS中也是一样,这叫做垃圾回收机制,向C语言中一般需要通过malloc申请内存资源,然后自己手动free来清除无用资源,而JS中是自动完成这一部分的。

引用计数 垃圾回收机制(GC)

和python一样,JS的垃圾回收机制为引用计数
当我们创建一个变量的同时,就相当于引用数为1,如果当一个变量无人引用引用数为0的时候,这个变量就会被删除。

但是!如果一个变量一直被引用,就不会被自动回收机制所回收!就容易造成内存泄漏的问题

所以我们现在知道一种内存泄漏的原因,有一些变量一直在被引用而导致内存无法被释放。

3. 常见的Javascript中存在的内存泄漏

这里主要参考了这篇博文的内容:
参考博文

意外的全局变量
// example 1
function foo</
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值