javascript / intermediate
Snippet
Speichersichere Metadaten mit WeakMap
WeakMap hält 'schwache' Referenzen auf Schlüssel, die Objekte sein müssen. Wenn keine anderen Referenzen auf das Schlüsselobjekt existieren, kann es von der Garbage Collection bereinigt werden, selbst wenn es noch ein Schlüssel in der WeakMap ist. Dies verhindert Speicherlecks beim Speichern von Metadaten zu Objekten.
snippet.js
1
2
3
4
5
6
7
8
const tracker = new WeakMap();function process(obj) {if (!tracker.has(obj)) tracker.set(obj, { count: 0 });tracker.get(obj).count++;}let data = { task: 'clean' };process(data);data = null;
Erklärung
1
const tracker = new WeakMap();
Initialisiert eine Map, deren Schlüssel für die Garbage Collection freigegeben werden können.
2
tracker.set(obj, { count: 0 });
Verknüpft Metadaten mit dem Objekt, ohne dessen Löschung aus dem Speicher zu verhindern.
3
data = null;
Das Löschen der Referenz erlaubt es, das Objekt und den zugehörigen WeakMap-Eintrag zu entfernen.