node.js Dateispeicherleck?

8

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?

    
facetious 13.01.2012, 20:36
quelle

1 Antwort

10

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: Ссылка

    
thejh 13.01.2012 22:06
quelle

Tags und Links