浅谈 JS 内存泄漏问题

本文介绍了JavaScript中的内存泄漏问题,包括其定义、识别方法,如使用Chrome开发者工具的Performance选项卡。常见原因有意外的全局变量、DOM清理不当、定时器未清除以及不规范的闭包使用。避免策略包括减少全局变量,注意程序逻辑,及时释放无用数据,以及避免过度的对象创建和深层引用。
摘要由CSDN通过智能技术生成

什么是内存泄漏?

程序的运行需要内存。只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存。

对于持续运行的服务进程(daemon),必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能:变慢,延迟大等 ,重则导致进程崩溃。
不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。

内存泄漏的识别方法

1、使用快捷键 F12 或者 Ctrl+Shift+J 打开 Chrome 浏览器的「开发者工具」。

2、选择 Performance(老版为Timeline) 选项卡,在 Capture 选项中,只勾选 Memory。

3、设置完成后,点击最左边的 Record 按钮,然后就可以访问网页了。

4、打开一个网站,例如:www.taobao.com,当网页加载完成后,点击 Stop,等待分析结果。

5、然后在 ChartView 上寻找内存急速下降的部分,查看对应的 EventLog,可以从中找到 GC 的日志。

具体过程如下图所示:在这里插入图片描述
内存泄露的常见原因及处理方式

常见原因:

  1. 意外的全局变量

下面代码中变量bar在foo函数内,但是bar并没有声明.JS就会默认将它变为全局变量,这样在页面关闭之前都不会被释放.


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值