javascript / intermediate
Snippet
Speichereffiziente Metadaten mit WeakMap
WeakMap speichert Schlüssel-Wert-Paare, wobei Schlüssel Objekte sein müssen. Im Gegensatz zu einer normalen Map verhindert sie nicht, dass ihre Schlüssel bereinigt werden, wenn keine anderen Referenzen existieren, was sie perfekt für Metadaten macht, ohne Speicherlecks zu riskieren.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
const userState = new WeakMap();function initializeUser(user) {userState.set(user, { startTime: Date.now(), attempts: 0 });}let currentUser = { id: 42, name: 'Niklas' };initializeUser(currentUser);// Metadata is automatically cleared when currentUser is garbage collectedcurrentUser = null;
nodejs
Erklärung
1
const userState = new WeakMap();
Erstellt eine Map, die schwache Referenzen auf ihre Schlüssel hält.
2
userState.set(user, { ... });
Verknüpft Metadaten mit der spezifischen Objektinstanz.
3
currentUser = null;
Entfernt die letzte Referenz; der Eintrag in der WeakMap wird automatisch vom GC gelöscht.