定义
应用程序中的内存不再被使用,但是它仍然被占用着,导致内存消耗逐渐增加,最终导致应用性能下降或卡顿崩溃。形象点描述就是
不断地往气球里吹气,但是不排气,最后导致气球炸开。虽然v8引擎中自带GC
,关于GC
可以看我这篇文章。了解V8 GC
但当某些对象意外存活于内存中
无法被回收时,还是会导致内存持续增长
内存泄漏常见示例
1. 意外的全局变量
1 2 3 4 5
| function sayHello() { text = 'say hello ~ '; }
|
2. 闭包
1 2 3 4 5 6 7 8 9 10 11 12 13
| function developDreams() { const dreams = "自由"; return function() { console.log(`我的梦想是——${dreams}`); }; }
const dream = developDreams();
dream = null;
|
3. 定时器 setInterval / setTimeout
1 2 3 4 5 6 7 8 9
| let num = [];
setInterval(() => { num.push(Math.random()* 100000); }, 1000);
const timer = setInterval(...); clearInterval(timer);
|
4. 时间监听
1 2 3 4 5 6 7 8 9 10 11 12
| function addListener() { const button = document.getElementById('myButton'); button.addEventListener('click', handleClick); }
function handleClick() { }
button.removeEventListener('click', handleClick);
|
哦对了,我最近开发了一个叫牛马工作器
的chrome拓展插件,很好玩哦,感兴趣的话,给我的公众号回复牛马
即可免费获取。
我的微信公众号: 梨的前端小屋