Ich bin verwirrt, wie meine Anwendung Speicher leckt. Es ist ein TCP-Server, der Hunderttausende Pakete pro Minute verarbeitet. Ich habe den Code überprüft, verbessert und das Gedächtnis profiliert.node.js v8 Garbage Collection scheint nicht zu triggern
Alles scheint in Ordnung, testet lokal mit wenig Verkehr tatsächlich zeigt, dass die GC den Speicher ordnungsgemäß freigibt. Aber wenn es auf dem Live-Schwerverkehrsserver ist, tut es das nicht.
Also habe ich versucht mit der expose-gc
Option und fügte die erzwungene GC zu jeder Trennung und jetzt habe ich festgestellt, dass der Speicher nicht mehr leckt oder war es jeder sogar undicht?
Also, meine Schlussfolgerung ist die GC hat nicht aktiviert. Mein Server hat 3 GB Speicher und die Anwendung in nur wenigen Stunden bekommt 2,8 GB davon.
Jetzt mit der erzwungenen GC ist die Anwendung nicht mehr undicht. Es hält rund 200 MB Speicher.
Also, meine Frage, warum wurde das GC nicht ausgelöst?
Haben Sie schon einmal eine Lösung gefunden? Ich habe das gleiche Problem T_T –
@MarsZhu Sorry, gab ich auf Node, und stattdessen Go, beste Entscheidung aller Zeiten. – majidarif