Что такое `WeakRef` и `FinalizationRegistry`?
УглублённыйУправление памятью
WeakRef — слабая ссылка на объект, не препятствующая сборке мусора:
const ref = new WeakRef(obj) — создание
ref.deref() — получить объект или undefined, если он собран
FinalizationRegistry — позволяет зарегистрировать callback, который вызовется после сборки объекта:
const registry = new FinalizationRegistry(callback)
registry.register(obj, heldValue) — регистрация
- Оба механизма недетерминированы — нельзя полагаться на время вызова
- Используются для кэшей, пулов ресурсов, cleanup внешних ресурсов