0 Tage Serie
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
javascript
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 collected
currentUser = 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.