FinalizationRegistryFinalizationRegistry — это встроенная функция JavaScript, введённая в ES2021, которая позволяет тебе зарегистрировать callback-функцию, которая будет вызвана, когда конкретный объект будет собран сборщиком мусора.
Ты создаёшь реестр, передав callback для очистки, а затем регистрируешь целевые объекты вместе со значением, которое будет передано в этот callback:
const registry = new FinalizationRegistry((heldValue) => {
console.log(`Cleaned up: ${heldValue}`);
});
let obj = { name: "resource" };
registry.register(obj, "my-resource");
obj = null; // eligible for garbage collection
WeakRefFinalizationRegistry обычно используется вместе с WeakRef, который хранит слабую ссылку на объект, не препятствуя его сборке мусором. Вместе они позволяют реализовать безопасные паттерны очистки, такие как:
WeakRef позволяет тебе обратиться к объекту, пока он жив, а реестр берёт на себя очистку после сборки мусора.
Используй FinalizationRegistry только как подстраховку по возможности — например, для обнаружения потенциальных утечек ресурсов при разработке. Всегда предпочитай явные методы очистки (вроде dispose() или close()) как основную стратегию управления ресурсами.
FinalizationRegistry гарантирует, что его callback будет вызван сразу же после того, как объект будет собран garbage collector'ом.
Новый — ещё не проверен сообществом
Вы