FileReader scheint den gesamten Speicher zu verbrauchen, da er wiederholt verwendet wird, um mehrere Blobs vorab zu laden, und gibt ihn niemals frei. Jeder bekannte Weg, um es zu zwingen, verbrauchten Speicher freizugeben? Das FileReader-Objekt und seine Ergebniseigenschaft auf null zu setzen, scheint nicht zu funktionieren.
UPDATE:
Hier ist ein Beispielcode (testen Sie es auf einer großen Datei, wie einem Film, oder Sie werden den Effekt nicht bemerken im Aufgabenmanager):
%Vor%Ich habe versucht, jedes Mal eine neue FileReader-Instanz zu erstellen, aber das Problem bleibt bestehen. Ich vermute, dass es durch eine kreisförmige Natur des Musters verursacht werden könnte, aber ich bin mir nicht sicher, welches andere Muster in diesem Fall verwendet werden kann.
Ich habe diesen Code sowohl in Firefox als auch in Chrome überprüft und Chrome scheint es eleganter zu handhaben - es löscht Speicher nach jedem Zyklus und ist sehr schnell. Aber die Ironie der Situation ist, dass Chrome diesen Code überhaupt nicht verwenden muss. Es ist nur ein Experiment, um Gecko 6- FormData + Blob Fehler zu überwinden ( Fehler 649150 - Blobs haben keinen Dateinamen, wenn sie über FormData ).
Der Fehler wurde als UNGÜLTIG markiert, da sich herausgestellt hat, dass ich das FileReader-Objekt nicht wirklich ordnungsgemäß wiederverwendete.
Hier ist ein Muster, das Speicher und CPU nicht verschwendet:
%Vor%Ein weiterer Fehlerbericht wurde eingereicht: Ссылка , das verwandt ist, aber nicht das Böse darin Fall.
Danke an Kyle Huey, dass er mich darauf aufmerksam gemacht hat :)
Tags und Links javascript memory-leaks dom memory-management filereader