Ich habe ein paar Hinweise auf Leute mit einem ähnlichen Problem gefunden, bei denen die Antwort immer war: Stellen Sie sicher, dass Sie window.close () aufrufen, wenn Sie fertig sind. Aber das scheint für mich nicht zu funktionieren (Knoten 0.8.14 und jsdom 0.3.1)
Eine einfache Repro
%Vor%Ausgabe, die ich bekomme, ist
%Vor%An diesem Punkt geht der Lüfter aus und der Test stoppt tatsächlich ... oder zumindest beginnt er sehr langsam zu gehen
Hat jemand andere Tipps als window.close, um den Speicherverlust loszuwerden (oder es sieht sicher wie ein Speicherleck aus)
Danke!
Peter
Verwenden von jsdom 0.6.0, um einige Daten zu scrapen und lief auf das gleiche Problem.
window.close
half nur, den Speicherverlust zu verlangsamen, aber es schlich schließlich herauf, bis der Prozess getötet wurde.
Ausführen des Skripts mit
node --expose-gc myscript.js
Bis sie den Speicherverlust beheben, scheint der Aufruf des Garbage Collectors zusätzlich zum Aufruf von window.close
zu funktionieren:
Stuck das nach dem Aufruf von window.close. Die Speicherverwendung fällt bei jedem Auslösen sofort auf die Grundlinie zurück (ca. 50 MB für mich). Kaum wahrnehmbarer Halt.
Ich hatte das gleiche Problem mit jsdom und switcht zu cheerio , das ist viel schneller als jsdom und funktioniert auch nach dem Scannen von Hunderten von Websites. Vielleicht solltest du es auch versuchen. Das einzige Problem ist, dass es alle Selektoren enthält, die Sie in jsdom verwenden können.
hoffe, es funktioniert auch für Sie.
Daniel
Sie geben dem Programm keine Leerlaufzeit für die Garbage Collection. Ich glaube, dass Sie mit dem gleichen Problem mit jedem großen Objekt-Graphen konfrontiert werden, der viele Male in einer Schleife ohne Unterbrechungen erzeugt wird.
Dies wird durch die Antwort von CheapSteaks bestätigt, die die Garbage Collection manuell erzwingt. Es kann keinen Speicherverlust in jsdom geben, wenn das funktioniert, da Speicherlecks per Definition verhindern, dass der Garbage Collector den ausgelaufenen Speicher sammelt.
mit Schluck, Speichernutzung, Bereinigung, Variable löschen, window.close ()
%Vor%und ich hatte konstant zwischen 200mb - 300mb Nutzung, für 7k Dateien. es dauerte 30 Minuten. Es könnte für jemanden hilfreich sein, da ich gegoogelt habe und nichts hilfreich gefunden habe.
Tags und Links memory-leaks node.js jsdom