javascript / expert
Snippet
Speichermanagement mit WeakRef und FinalizationRegistry
WeakRef ermöglicht es, eine schwache Referenz auf ein Objekt zu halten, was bedeutet, dass es die Garbage Collection des Objekts nicht verhindert. In Kombination mit FinalizationRegistry können anspruchsvolle Caches erstellt werden, die Metadaten automatisch bereinigen, wenn das zwischengespeicherte Objekt von der Engine freigegeben wird.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
const cache = new Map();const registry = new FinalizationRegistry((key) => {console.log(`Cleaned up: ${key}`);});function createCachedRef(key, obj) {cache.set(key, new WeakRef(obj));registry.register(obj, key);}// Usage: const obj = cache.get(key)?.deref();
nodejs
Erklärung
1
new WeakRef(obj)
Erstellt eine Referenz, die nicht verhindert, dass das Objekt von der Garbage Collection erfasst wird.
2
new FinalizationRegistry((key) => { ... })
Definiert einen Callback, der ausgelöst wird, nachdem ein bei der Registry registriertes Objekt gelöscht wurde.