Vue: Möglicher Speicherverlust bei v-for im Entwicklungsmodus

Erstellt am 17. Juli 2018  ·  3Kommentare  ·  Quelle: vuejs/vue

Ausführung

2.5.16

Reproduktionslink

https://codepen.io/anon/pen/KBMaOY

Schritte zum Reproduzieren

  • Öffnen Sie den Codepen https://codepen.io/anon/pen/gjMgzG
  • Klicken Sie ein paar Mal, um 0 Artikel aufzulisten, dann 1000
  • Sehen Sie, wie die Erinnerung wächst
  • Versuchen Sie, GC (Papierkorbsymbol) zu erzwingen, bevor Sie es messen
  • Heap-Snapshots im Chrome-Tab "Speicher" erstellen
  • Beobachten Sie die Speichernutzung im Chome-Task-Manager (Shift esc)
  • Beobachten Sie die Speichernutzung im Task-Manager des Betriebssystems

Was wird erwartet?

Gleiche Speichernutzung nach Garbage Collector

Was passiert eigentlich?

Obwohl die Registerkarte "Leistung" die gleiche Speicherauslastung anzeigt, zeigt der Heap-Snapshot "Speicher" eine Speicherzunahme an.
Außerdem zeigen die Task-Manager von Chrome und OS, dass der Speicher nur zunimmt.


Es wird schlimmer, wenn:

  • Verwendung von Vuei18n (auch ohne zu übersetzen)
  • Komponenten für große Kinder haben

Getestet am:

  • Windows 7 64 Bit
  • Chrome 67.0.3396.99 64-Bit

Bitte bedenken Sie Folgendes:

  • Vielleicht mache ich etwas falsch
  • Es kann ein Chrome-Problem sein
  • Es kann ein Betriebssystemproblem sein
improvement

Hilfreichster Kommentar

Ich habe das gleiche Problem, gibt es diesbezüglich einen Vorlauf?

Alle 3 Kommentare

Es scheint nur im Nicht-Produktionsmodus ein Leck zu geben. Du solltest gut in der Produktion sein

Danke für die Rücksendung @posva .

Ich habe auch ein Problem mit vue-i18n erstellt, da die Speichernutzung bei der Verwendung viel zu hoch wird.
Ich verwende auch vue-virtual-scroller, die beim Paginieren oder Scrollen der Seite eine Menge Komponenten zerstören und erstellen.

Ich weiß nicht, inwieweit diese zusammenhängen, aber diese beiden Pakete zusammen mit einer komplexen oder tieferen Komponentenstruktur beanspruchen selbst im Produktionsmodus viel Speicher.

Wenn ich in den Google Task-Manager schaue, erhöht sich mein App-Tab um ~ 2.400 K jedes Element, das ich nach unten / oben scrolle (jeder wird in den Prozessen zerstört / erstellt).
In weniger als einer Minute, wenn ich nach oben und unten scrolle, bekomme ich fast 1 GB Speicherverbrauch, den Produktionsmodus oder die Entwicklertools geschlossen oder nach GC. Und nach der Route geht es nicht viel runter.

Ich bin nicht an den Kerncode von vue oder vue-i18n gewöhnt, aber es sieht so aus, als würde die Struktur der installierten Komponenten für jede verschachtelte Komponente in der App kopiert, und der GC kann dies nicht bereinigen, nachdem diese verschachtelten Komponenten zerstört wurden. Es kann an der Art und Weise liegen, wie sich vue-i18n selbst installiert, ich weiß es wirklich nicht. Die folgenden Daten lassen mich darüber nachdenken:

image

Ich habe das gleiche Problem, gibt es diesbezüglich einen Vorlauf?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen