javascript / expert
Snippet
Verwaltung von Seiteneffekten mit FinalizationRegistry
FinalizationRegistry ermöglicht es, einen Callback anzufordern, nachdem ein Objekt vom Garbage Collector erfasst wurde. Dies ist nützlich für das Bereinigen externer Ressourcen wie Dateideskriptoren oder Sockets, die an den Lebenszyklus eines JavaScript-Objekts gebunden sind, ohne Speicherlecks zu verursachen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
const registry = new FinalizationRegistry(heldValue => {console.log(`Resource ${heldValue} was garbage collected.`);});function createComplexResource(id) {const resource = { id, data: new Array(1000).fill('data') };registry.register(resource, id);return resource;}let myResource = createComplexResource('db-connection-1');myResource = null; // Eligible for GC
nodejs
Erklärung
1
new FinalizationRegistry(heldValue => { ... })
Definiert die Bereinigungslogik, die ausgeführt wird, wenn ein registriertes Objekt zurückgefordert wird.
2
registry.register(resource, id)
Verknüpft ein Zielobjekt mit einem Wert (heldValue), der an den Bereinigungs-Callback übergeben wird.
3
myResource = null;
Entfernt die einzige Referenz auf das Objekt, sodass die Engine es schließlich zurückfordern kann.