Ich sehe ein Speicherleck mit dem folgenden Code:
%Vor%Ich habe versucht, die Zeichenfolge zu definieren und nur eine Konstante zu verwenden, aber sie verliert immer noch Speicher:
%Vor%Das gleiche Problem tritt auf, wenn ich eine Datei anstelle des Standardprotokolls verwende:
%Vor%Ich dachte, vielleicht lag es daran, dass ich die Datei nicht richtig geschlossen habe, aber ich habe es versucht und trotzdem das Leck gesehen:
%Vor%Hat jemand irgendwelche Hinweise, wie ich Sachen schreiben soll, ohne Speicher zu verlieren?
Dies geschieht, weil Sie dem Knoten nie die Möglichkeit geben, mit "write successfull" -Ereignissen umzugehen, so dass sie sich endlos anstellen. Um dem Knoten die Möglichkeit zu geben, mit ihnen umzugehen, muss die Ereignisschleife von Zeit zu Zeit eine Iteration durchlaufen. Dies wird nicht undicht:
%Vor%In echten Anwendungsfällen ist das kein Problem, da Sie nie so große Datenmengen auf einmal schreiben müssen, auf die es ankommt. Und wenn dies der Fall ist, zyklisch die Ereignisschleife von Zeit zu Zeit.
Allerdings gibt es auch noch ein zweites Problem mit dem nextTick
Trick: Schreiben ist asynchron, und wenn die Konsole / Datei / was auch immer langsamer ist als der Knoten, puffert der Knoten die Daten endlos, bis die Ausgabe wieder frei ist. Um dies zu vermeiden, musst du nach dem Schreiben von etwas auf das drain
-Ereignis warten - es zeigt dir an, wenn das Rohr wieder frei ist. Siehe hier: Ссылка
Tags und Links memory-leaks node.js logging file