Vue: 開発モードでv-forを実行するとメモリリークが発生する可能性があります

作成日 2018年07月17日  ·  3コメント  ·  ソース: vuejs/vue

バージョン

2.5.16

複製リンク

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

再現する手順

  • codepenを開きますhttps://codepen.io/anon/pen/gjMgzG
  • 数回クリックして0個のアイテムをリストし、次に1000個をリストします
  • 増加するメモリを参照してください
  • 測定する前に強制GC(ゴミ箱アイコン)を試してください
  • Chromeの[メモリ]タブでヒープスナップショットを作成します
  • Chomeタスクマネージャーでメモリ使用量を監視します(shift esc)
  • OSタスクマネージャーでメモリ使用量を監視する

何が期待されますか?

ガベージコレクタ後の同じメモリ使用量

実際に何が起こっているのですか?

[パフォーマンス]タブには同じメモリ使用量が表示されますが、[メモリ]ヒープスナップショットにはメモリの増加が表示されます。
また、ChromeとOSの両方のタスクマネージャは、メモリが増加しているだけであることを示しています。


次の場合に悪化します。

  • Vuei18nの使用(翻訳しなくても)
  • 大きな子コンポーネントを持つ

テスト済み:

  • Windows 764ビット
  • Chrome 67.0.3396.9964ビット

次のことを考慮してください。

  • 私は何か間違ったことをしている可能性があります
  • Chromeの問題である可能性があります
  • OSの問題である可能性があります
improvement

最も参考になるコメント

私は同じ問題を抱えています、これについて何か進歩はありますか?

全てのコメント3件

非本番モードでのみリークがあるようです。 あなたは生産で元気でなければなりません

@posvaを返してくれてありがとう。

また、vue-i18nを使用するとメモリ使用量が非常に多くなるため、vue-i18nで問題を作成しました。
私もvue-virtual-scrollerを使用しています。これは、ページをページ付けまたはスクロールすると、コンポーネントを破壊して大量に作成します。

これらがどの程度関連しているのかはわかりませんが、これら2つのパッケージは、いくつかの複雑なまたはより深いコンポーネント構造とともに、実稼働モードでも多くのメモリ使用量を消費しています。

Googleタスクマネージャーを見ると、アプリのタブは、上下にスクロールするたびに最大2.400Kずつ増加します(各アイテムはプロセスで破棄/作成されます)。
上下にスクロールするのに1分もかからずに、ほぼ1GBのメモリ使用量、本番モード、開発ツールを閉じるか、GCの後に取得します。 そして、それはルートの後であまり下がらない。

私はvueまたはvue-i18nのコアコードに慣れていませんが、インストールされたコンポーネント構造がアプリ内のネストされたコンポーネントごとにコピーされているようで、GCはそのネストされたコンポーネントを破棄した後にそれをクリーンアップできません。 それはvue-i18nがそれ自体をインストールする方法かもしれません、私は本当に知りません。 以下のデータは私がそれについて考えさせるものです:

image

私は同じ問題を抱えています、これについて何か進歩はありますか?

このページは役に立ちましたか?
0 / 5 - 0 評価