WeakRef
一、认识
WeakRef对象允许您保留对另一个对象的弱引用,而不会阻止被弱引用对象被GC回收
二、语法
const obj = {
type:'对象'
}
const weakRef = new WeakRef(obj);
三、属性
四、方法
4.1 weakRef.deref()
weakRef.prototype.deref() 返回当前实例的WeakRef对象所绑定的target对象,如果该target对象已被GC回收则返回undefined
语法
let obj = {
type:'对象',
data:[]
}
const weakRef = new WeakRef(obj);
console.log(weakRef.deref()); // {type: '对象', data: Array(0)}
五、引用
5.1 强引用
5.2 弱引用
WeakRef 是弱引用,那么弱引用的表现如何?
-
强引用的表现
const registry = new FinalizationRegistry((heldValue)=>{
console.log('恭喜您,内存回收成功!',heldValue); // 回调函数不会执行
});
let obj = {
type:'对象',
data:[]
}
const objCopy = obj;
registry.register(obj,'obj销毁');
obj = null; -
弱引用的表现
const registry = new FinalizationRegistry((heldValue)=>{
console.log('恭喜您,内存回收成功!',heldValue); // 等待一段时间后会输出
});
let obj = {
type:'对象',
data:[]
}
const weakRef = new WeakRef(obj);
registry.register(obj,'obj销毁');
obj = null;