内存泄漏和JS垃圾回收机制

2021-04-23  本文已影响0人  my木子

内存泄漏(memory leak)

JS垃圾回收机制原理

常见的内存泄漏

num = 1;  
console.log( num );
num  = null;
function f1() {
    var a = 1;
    function f2() {
        console.log(a++);
    };
    return f2
};
var f = f1();
f();
f = null;   //  f 和函数 f2 的联系被切断,f2 不再被引用,因此f2被回收
let i = 0;
let  t = setInterval(function(){
    i++;
    if(i>3){
        clearInterval(t);
    }
    console.log(i);
},1000);
let btn = document.getElementById('btn');
// ...
btn = null;
window.addEventListener('click', this.fun);
// ...
window.removeEventListener('click', this.fun);

Vue 中容易出现内存泄露的几种情况

destroyed () {
    window.data = null; // 页面卸载的时候解除引用
}
destroyed () {
    EventBus.$off();
}
beforeDestroy () {
  window.removeEventListener('click', this.fun);
}
beforeDestroy () {
  this.chart.clear();
}

ES6 防止内存泄漏

const listener = new WeakMap();
const ele = document.getElementById('btn');
listener.set(ele, fun);
ele.addEventListener('click', listener.get(ele), false);
上一篇 下一篇

猜你喜欢

热点阅读