javascript / expert
Snippet
WeakRef und FinalizationRegistry für Speicherbereinigung in Next.js Caches
Die Nutzung von WeakRef und FinalizationRegistry erstellt Garbage-Collection-bewusste Cache-Strukturen in Next.js-Laufzeitinstanzen, die Einträge automatisch löschen, wenn Speicherbereinigungen ausgelöst werden.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const cache = new Map();const registry = new FinalizationRegistry((key) => {cache.delete(key);});export function setWeakCache(key, value) {const ref = new WeakRef(value);cache.set(key, ref);registry.register(value, key);}export function getWeakCache(key) {const ref = cache.get(key);return ref ? ref.deref() ?? null : null;}
nextjs
Erklärung
1
const registry = new FinalizationRegistry((key) => {
Initialisiert einen Registry-Callback, der asynchron ausgelöst wird, sobald registrierte Zielobjekte vom Garbage Collector bereinigt wurden.
2
const ref = new WeakRef(value);
Erzeugt eine schwache Referenz auf das gecachte Objekt, ohne dessen Bereinigung durch die Engine zu verhindern.
3
return ref ? ref.deref() ?? null : null;
Versucht die schwach gehaltene Zielreferenz mittels deref() aufzulösen und gibt null zurück, falls sie bereinigt wurde.