因为垃圾回收机制 依赖 引用计数,
如果一个值的 引用次数 不为0,垃圾回收机制 就不会释放这块内存。
结束使用该值之后,有时会忘记 取消引用 ,导致内存无法释放,进而可能会 引发 内存泄漏。
取消引用 即 置空
const e1 = document.getElementById('foo');
const e2 = document.getElementById('bar');
const arr = [
[e1, 'foo 元素'],
[e2, 'bar 元素'],
];
// e1和e2是两个对象 形成了arr对e1和e2的引用。
// 不需要 e1 和 e2 的时候
// 必须手动删除引用
arr [0] = null;
arr [1] = null;
WeakMap的专用场合就是,它的键所对应的对象,可能会在将来消失。WeakMap结构有助于防止内存泄漏。
WeakMap 弱引用的只是键名,而不是键值。键值依然是正常引用。
网友评论