内存泄漏——不再用到的内存,没有及时释放
垃圾回收机制
引用计数:当一个值的引用次数为0时,就表示这个值不再用到了,可以将内存释放
const arr =[1, 2, 3, 4];
console.log('hello word')
数组【1,2,3,4】是一个值,会占用内存,变量arr 是仅有的对这个值的引用,因此引用次数为1,尽管后面没有用到arr,它还是会持续占用内存
arr = null; //手动将此内存释放
内存泄漏的识别方法
经验法则是:如果连续五次垃圾回收之后,内存占用一次比一次大,就有内存泄漏
WeakMap
ES6推出两种新的数据结构:WeakSet 和 WeakMap,他们对于值的引用都是不计入垃圾回收机制的,所有名字中有个“Weak”;表示这是弱引用
const wm = new WeakMap();
const element = document.getElementById('example');
wm.set(element, 'some informatino')
wm.get(element);
网友评论