ES12新增的FinalizationRegistry 对象,可以让你在对象被垃圾回收时请求一个回调。
使用方法:
const finalRegistry = new FinalizationRegistry((value) => {
console.log('注册在finalRegistry的对象中的,某一个被销毁了', value);
});
let obj = { name: 'mm' }; // obj有个引用在指向它所以不会被销毁
let info = { name: 'info' };
// 将需要监听的对象 注册到finalRegistry中
finalRegistry.register(obj, 'obj');// 第二个参数可以作为标识,传给回调。
finalRegistry.register(info, 'info');
//将obj、info赋值为null。注意: 并不是执行了obj=null之后obj就会立马被销毁,因为GC是不定时的。
obj = null;
info = null;
//会在GC回收时执行回调
/*
注册在finalRegistry的对象中的,某一个被销毁了 info
注册在finalRegistry的对象中的,某一个被销毁了 obj
*/
注意:node 运行代码之后会自动将进程关掉的,所以上面的代码在 nodejs 环境中运行回调不会被触发