0 Tage Serie
javascript / expert
Snippet

Programmatisches Memory-Profiling in Node.js

Über das 'v8'-Modul können Node.js-Anwendungen programmatisch Heap-Snapshots erstellen. In Kombination mit manueller Garbage Collection (über das Flag --expose-gc) ermöglicht dies eine präzise Erkennung von Speicherlecks und diagnostische Berichte direkt aus der Produktions-Runtime.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
import v8 from 'node:v8';
import fs from 'node:fs';
function analyzeMemory() {
if (typeof global.gc === 'function') {
global.gc(); // Manual GC trigger (requires --expose-gc)
}
const stream = v8.getHeapSnapshot();
const fileName = `${Date.now()}.heapsnapshot`;
stream.pipe(fs.createWriteStream(fileName));
console.log(`Snapshot saved: ${fileName}`);
}
nodejs
Erklärung
1
global.gc();
Erzwingt einen Garbage-Collection-Zyklus, um nicht erreichbare Objekte vor der Aufnahme eines Snapshots zu löschen.
2
v8.getHeapSnapshot();
Gibt einen lesbaren Stream zurück, der den aktuellen V8-Heap-Zustand enthält.