哪些操作会造成内存泄漏及Js内存泄露解决方法

本文探讨了JavaScript中导致内存泄漏的几种情况,包括垃圾回收机制无法清除的对象、setTimeout的字符串参数、闭包、循环引用等。同时,提出了相应的解决方法,如避免意外全局变量、使用严格模式、及时释放定时器和回调函数引用、管理闭包以及正确处理DOM引用,以防止内存资源浪费。
摘要由CSDN通过智能技术生成

1、垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的 引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的 内存即可回收

2、setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏

3、闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

Js内存泄露解决方法

1.global variables:对未声明的变量的引用在全局对象内创建一个新变量。在浏览器中,全 局对象就是 window。

function foo(arg) {
bar = 'some text'; // 等同于 window.bar = 'some text';

}

解决: 创建意外的全局变量

function foo() {
this.var1 = 'potential accident'

}

2.可以在 JavaScript 文件开头添加 “use strict”,使用严格模式。这样在严格模式 下解析 JavaScript 可以防止意外的全局变量

3.在使用完之后,对其赋值为 null 或者重新分配

4.被忘记的 Timers 或者 callbacks

在 JavaScript 中使用 setInterval 非常常见 大多数库都会提供观察者或者其它工具来处理回调函数,在他们自己的实例变为不可达时,

会让回调函数也变为不可达的。对于 setInterval,下面这样的代码是非常常见的:

var serverData = loadData();
setInterval(function() {
var renderer =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值