JS中闭包引起内存泄漏的解析
发布日期:2021-09-30 04:14:32
浏览次数:1
分类:技术文章
本文共 760 字,大约阅读时间需要 2 分钟。
我觉得,闭包在JS中是一个比较强大的语言特色,但是,在使用闭包的过程中,有很多途径会引起内存泄漏的问题。。先看下面这段代码:
这是一个典型的闭包引用。但是我们可以注意到一个问题,在该闭包函数的作用域内维持了一个对element的引用(这里的elment指的是munu这个DOM对象),而该DOM对象同时又包含着一个对该闭包的引用。因此,这便形成了一个循环引用。要释放DOM对象,那么先要删除闭包对它的引用,而要释放闭包,又要等待DOM引用的释放。这样,边造成了内存泄漏的问题。
还有一点,因为闭包存在于外层函数中,那么它是作为一个“临时对象存在的”,当外层函数执行完毕时,那么我们便失去了对闭包的引用,这时,我们又该如何去调用detachEvent来清除引用呢?
解决方案:
将闭包赋值给element对象的一个属性,如element.handler=function mouseHandler(){};那么,在body的onunload事件中,可以直接通过element.handler来引用它,从而释放事件引用。。
转载地址:https://blog.csdn.net/huli870715/article/details/6342708 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月22日 22时11分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
支付宝 java 乱码_支付宝即时到账接口中文乱码问题
2019-04-21
java中的handler理解_handler 与message的一些理解
2019-04-21
JAVA礼物题_这些Java面试题,你一定要记住!
2019-04-21
java 隐藏email_java Email
2019-04-21
linux下qt浏览word文件内容,Qt获取office文件内容
2019-04-21
amd锐龙笔记本cpu怎么样_不知不觉已经15款 AMD Ryzen锐龙笔记本处理器盘点
2019-04-21
syslog打印不带等级_(转)syslog日志等级
2019-04-21
librosa能量_librosa语音信号处理
2019-04-21
android日期选择区间控件_Android时间区间的选择
2019-04-21
lin通讯从节点同步间隔场_LIN模块介绍
2019-04-21
mysql注入提取邮件_Mysql提取数据每日自动邮件通知
2019-04-21
mysql 列权限_mysql 权限相关
2019-04-21
python入门之基础语法第四关输入输出答案_Python基本语法入门,基础
2019-04-21
mysql在存储过程仍_mysql存储过程
2019-04-21
失败的人生图片_早安励志经典语录精辟的一句话人生感悟
2019-04-21
如何设画面大小_如何设计旅游类项目?分享3种设计思路
2019-04-21