⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

JavaScript FinalizationRegistry

FinalizationRegistry对象(ES2021):对象被垃圾回收后的清理回调、register(target,heldValue,unregisterToken)注册、unregister取消注册、WeakRef.deref检查弱引用对象是否还存活、用例(清理共享资源/缓存过期但不要依赖GC时机) · 难度:入门 · +10XP

JavaScript FinalizationRegistry —— 对象被GC时执行回调

FinalizationRegistry让你注册一个回调——当注册的对象被垃圾回收时,回调被执行。用于清理与对象关联的外部资源(如释放WebGL纹理、关闭文件句柄)。

基本用法

const registry = new FinalizationRegistry((heldValue) => {
  console.log('对象被回收了,清理资源:', heldValue);
});

let obj = { data: 'important' }; registry.register(obj, 'some-resource-id'); obj = null; // obj没有强引用了 // ... 一段时间后GC运行 ... // 控制台打印:对象被回收了,清理资源:some-resource-id

注意:不要依赖GC时机!不同引擎行为不同。FinalizationRegistry用于"尽力而为"的资源清理。

动手练习

  1. 基础练习:注册一个对象到FinalizationRegistry,观察它被回收时回调是否触发。
  2. 进阶应用:用WeakRef+FinalizationRegistry实现带自动清理的缓存。
  3. 项目实战:在WebGL应用中用FinalizationRegistry自动释放GPU纹理。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0