Vue: Fuite de mémoire possible lorsque v-for en mode développement

Créé le 17 juil. 2018  ·  3Commentaires  ·  Source: vuejs/vue

Version

2.5.16

Lien de reproduction

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

Étapes à reproduire

  • Ouvrez le codepen https://codepen.io/anon/pen/gjMgzG
  • Cliquez plusieurs fois pour lister 0 élément, puis 1000
  • Voir la mémoire augmenter
  • Essayez de forcer le GC (icône de la corbeille) avant de le mesurer
  • Prenez des instantanés de tas dans l'onglet "Mémoire" de Chrome
  • Regardez l'utilisation de la mémoire dans le gestionnaire de tâches Chome (shift esc)
  • Regardez l'utilisation de la mémoire dans le gestionnaire de tâches du système d'exploitation

Qu'est-ce qui est attendu ?

Même utilisation de la mémoire après le ramasse-miettes

Que se passe-t-il réellement ?

Bien que l'onglet "Performances" affiche la même utilisation de la mémoire, l'instantané de tas "Mémoire" affiche une augmentation de la mémoire.
De plus, les gestionnaires de tâches Chrome et OS montrent que la mémoire ne fait qu'augmenter.


C'est pire quand :

  • Utiliser Vuei18n (même sans traduction)
  • Avoir des composants pour les grands enfants

Testé sur :

  • Windows 7 64 bits
  • Chrome 67.0.3396.99 64 bits

S'il vous plaît, considérez que :

  • je fais peut-être quelque chose de mal
  • Il peut s'agir d'un problème Chrome
  • Cela peut être un problème de système d'exploitation
improvement

Commentaire le plus utile

J'ai le même problème, avez vous une avance à ce sujet ?

Tous les 3 commentaires

Il semble qu'il y ait une fuite en mode non-production uniquement. Vous devriez être bien en production

Merci pour le retour @posva .

J'ai également créé un problème sur vue-i18n, car l'utilisation de la mémoire devient beaucoup trop importante lors de son utilisation.
J'utilise également vue-virtual-scroller, qui détruit et crée beaucoup de composants lors de la pagination ou du défilement de la page.

Je ne sais pas à quel point ceux-ci peuvent être liés, mais ces deux packages, ainsi que des structures de composants complexes ou plus profondes, consomment beaucoup de mémoire, même en mode production.

En regardant dans le gestionnaire de tâches Google, mon onglet d'application augmente d'environ 2 400 000 chaque élément que je fais défiler vers le bas/vers le haut (chacun est détruit/créé dans les processus).
En moins d'une minute, en faisant défiler vers le haut et vers le bas, j'obtiens près de 1 Go d'utilisation de la mémoire, le mode de production ou les outils de développement fermés ou après GC. Et il ne descend pas beaucoup après la route.

Je ne suis pas habitué au code de base de vue ou vue-i18n, mais il semble que la structure des composants installés soit copiée pour chaque composant imbriqué dans l'application, et le GC ne peut pas le nettoyer après avoir détruit ces composants imbriqués. Cela peut être la façon dont vue-i18n s'installe, je ne sais vraiment pas. Les données ci-dessous sont ce qui me fait penser à cela:

image

J'ai le même problème, avez vous une avance à ce sujet ?

Cette page vous a été utile?
0 / 5 - 0 notes