javascript / expert
Snippet
Fortgeschrittene Speicherverwaltung mit WeakRef und FinalizationRegistry
WeakRef und FinalizationRegistry ermöglichen ein fortgeschrittenes Speichermanagement in langlebigen Anwendungen. Ein WeakRef erlaubt es, eine Referenz auf ein Objekt zu halten, ohne dessen Garbage Collection zu verhindern, während FinalizationRegistry einen Callback bereitstellt, wenn ein Objekt tatsächlich freigegeben wird. Dies ist entscheidend für die Implementierung von Caches, die keinen Speicher leaken, oder für die Verwaltung externer Ressourcen, die an JavaScript-Objekte gebunden sind.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
const registry = new FinalizationRegistry((heldValue) => {console.log(`Resource ${heldValue} was garbage collected`);});function createHeavyObject(id) {const obj = { id, data: new BigUint64Array(1000000) };const ref = new WeakRef(obj);registry.register(obj, id);return ref;}let heavyRef = createHeavyObject('session_123');// Access via heavyRef.deref()
nextjs
Erklärung
1
const registry = new FinalizationRegistry((heldValue) => { ... });
Erstellt ein Registry, das einen Callback auslöst, nachdem registrierte Objekte vom Garbage Collector erfasst wurden.
2
const ref = new WeakRef(obj);
Erstellt eine schwache Referenz; das Objekt kann freigegeben werden, selbst wenn diese Referenz existiert.
3
registry.register(obj, id);
Registriert das Objekt beim Registry, um dessen Lebenszyklus unter Verwendung der bereitgestellten ID zu verfolgen.