各位观众老爷们,大家好!今天咱们来聊聊 JavaScript 里两个有点儿“神秘”,但又非常实用的家伙:WeakRef 和 FinalizationRegistry。它们哥俩是 ES2021 推出的新特性,主要解决的是 JavaScript 中弱引用管理的问题。 引子:JavaScript 的内存管理和垃圾回收 在深入 WeakRef 和 FinalizationRegistry 之前,咱们先简单回顾一下 JavaScript 的内存管理机制。JavaScript 是一种具有自动垃圾回收机制的语言,也就是说,程序员不用手动去 malloc 和 free 内存,语言引擎会自动帮我们处理。 那么问题来了,引擎怎么知道哪些内存是可以回收的呢? 答案是:可达性。 简单来说,如果一个对象可以从根对象(比如全局对象)通过一系列引用链访问到,那么它就是“可达的”,引擎就会认为它还在被使用,不会回收它。相反,如果一个对象没有任何引用指向它,或者说它已经“不可达”了,那么引擎就会认为它可以被回收了。 这种机制在大多数情况下都工作得很好,但有时候也会带来一些问题,最常见的就是内存泄漏。 内存泄漏:一场悄无 …
继续阅读“JS `WeakRef` 与 `FinalizationRegistry` (ES2021):更灵活的弱引用管理”