javascript内存泄漏有哪些原因

技术javascript内存泄漏有哪些原因本篇内容介绍了“javascript内存泄漏有哪些原因”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

本文介绍了关于“javascript内存泄漏的原因是什么”的知识。很多人在实际办案过程中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

javascript内存泄漏的原因如下:1。全局变量使用不当;2.瓶盖使用不当;3.延迟或计时器未被清除;4.没有清除的dom元素引用(当DOM被清除或删除时,事件不会被清除)。

本教程操作环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。

内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。即指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并不是指内存的物理消失,而是应用程序分配了一定的内存后,由于设计错误造成的内存浪费,导致释放内存前失去对内存的控制。以下是内存泄漏的一些常见原因。

1. 全局变量

JavaScript可以处理未声明的变量:引用未声明的变量会在全局对象中创建新变量。在浏览器环境中,全局对象是窗口。

functionfoo(){ 0

名称='前置日期';

}

//实际上,name变量是挂载在窗口对象上的。

functionfoo(){ 0

Window.name='前置日期';

}

//或者

functionfoo(){ 0

This.name=' front date

}

fo()//实际上,这里是指向的window对象,所以意外创建了一个意外的全局变量。为了防止此错误,请添加“使用strict”到你的Javascript文件的前面。这为解析JavaScript打开了一个更严格的模式,以防止意外的全局。还是自己注意变量的定义吧!

00-1010闭包:匿名函数可以访问父作用域的变量。

varnames=(function(){ 0

varname=' js-say ';

return function(){ 0

console.log(名称);

}

})()闭包会导致对象引用的生命周期脱离当前函数的上下文。如果闭包使用不当,会导致循环引用,类似死锁,只能避免,发生后无法解决。即使有垃圾收集,内存仍然会泄漏。

00-1010在我们的日常需求中,我们可能经常尝试setInterval/setTimeout,但通常在使用后会忘记清理。

varsomesource=getData();

setInterval(函数(){ 0

varnode=document . getelementbyid(' Node ');

if(节点){ 0

//处理节点和某些资源

node . innerhtml=JSON . stringify(some resource));

}

},1000);这个in interval/settimeout指向窗口对象,所以内部定义的变量也被挂载到全局;if中引用了SomeResource变量,如果setInterval/setTimeout未清除,则无法释放some resource;其实setTimeout也是一样的。因此,当我们完成时,我们需要记住转到clearInterval/clearTimeout。

2. 闭包

varelements={ 0

button : document . getelementbyid(' button '),

image : document . getelementbyid(' image '),

text : document . getelementbyid(' text ')

};

functiondoStuff(){ 0

image . src=' http://some . URL/image ';

button . click();

console . log(text . innerhtml);

}

functionremoveButton(){ 0

document . body . remove child(document . getelementbyid(' button '));

//此时仍然有#button的全局引用。

//元素字典。按钮元素仍在内存中,无法被GC回收。

}“什么原因导致了}”JavaScript内存泄漏?“介绍到这里了。感谢阅读。如果你想了解更多的行业,可以关注网站。边肖将为您输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107923.html

(0)

相关推荐

  • 没有编程经验的Python初学者遇到问题怎么办

    技术没有编程经验的Python初学者遇到问题怎么办这篇文章给大家介绍没有编程经验的Python初学者遇到问题怎么办,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。对于没有编程经验的初学者,在学习pyt

    攻略 2021年10月25日
  • 今日头条邀请码,今日头条极速版填写邀请码教程

    技术今日头条邀请码,今日头条极速版填写邀请码教程1今日头条邀请码、若是想在今日头条极速版里面填写邀请码,大家需要从主页的右上角点击头像按钮,登录账号进入个人中心,从列表里找到“输入邀请码”的功能。2、进入到输入邀请码的页

    生活 2021年11月1日
  • 怎么理解MySQL垂直和水平切分

    技术怎么理解MySQL垂直和水平切分这篇文章主要介绍“怎么理解MySQL垂直和水平切分”,在日常操作中,相信很多人在怎么理解MySQL垂直和水平切分问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

    攻略 2021年11月19日
  • 心情低落想哭句子,有没有形容心情很低落的句子

    技术心情低落想哭句子,有没有形容心情很低落的句子1、张爱玲曾说心情低落想哭句子,孤单不是与生俱来的,而是由你爱上一个人的那一刻开始。但,在这千疮百孔、满身疲惫的夜晚,空对一身莫名的悲凉与刻骨的孤单,仍期待有人,能许我们一

    生活 2021年10月22日
  • 0元刷抖音粉,刷抖音粉丝的好处有哪些?

    技术0元刷抖音粉,刷抖音粉丝的好处有哪些?抖音粉丝数量少怎么办?如何刷抖音粉丝呢?很多玩抖音的小伙伴都有刷粉丝的需求,那么今天小编就来教大家如何快速刷抖音粉丝吧,其实也不难,只要用心学肯定能学会。
    迫不及待想涨粉的现在可

    测评 2021年10月19日
  • 巍怎么读,王巍导演的动画片好看吗

    技术巍怎么读,王巍导演的动画片好看吗执导了超过15,000分钟的动画片,包括巍怎么读:全国首部三维长篇动画系列《猪猪侠》(1-4部)《超兽武装之仁者无敌》、《超兽武装之勇者无惧》全国首部变形机器人系列《百变机兽》、
    Q版

    生活 2021年10月26日