3

そのため、長時間使用した後、アプリケーションが遅くなることに気付きました。特に、長いリストの各項目である多くのビューを作成する場合。これらのビューを view.remove() で削除すると問題が解決すると思っていましたが、ページから削除されている間、Chrome のタイムラインで DOM ノード数が減らないことがわかりました。私が追加する各ビューは、この数を増やし続けます。実際のところ、このノード数を減らすように見える唯一のことは、ページの更新です。

これは私には正しくないと感じています。これらのビューだけでなく、すべてのビューで問題が発生しているように見えるため、本当に初歩的なことを台無しにしたような気がします。ビューリストが非常に多いため、これらのビューリストを使用すると、はるかに迅速に処理されます。

私が何を探すべきかについて何か提案はありますか?どのような原因でこの動作が発生する可能性がありますか?

コードを提供しますが、何が役立つかわかりません。

TL;DR - View.remove() はページからビューを削除していますが、DOM ノード数は増え続け、決して減りません。

4

1 に答える 1

6

ビューを適切にクリーンアップしていないことが原因で、メモリ リークが発生しています。

これを読んでください:http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

そしてこれ:http://lostechies.com/derickbailey/2012/03/19/backbone-js-and-javascript-garbage-collection/

.remove()意見を求めるだけでは不十分です。ビューを閉じようとしたときにぶら下がっているすべてのイベントとその他のバインディングを適切に破棄する必要があります。これを行う一般的な方法はclose、ビューにメソッドを提供することです。これについては、最初の投稿で説明しました。

初投稿時のジョニー大鹿さんのコメントも是非読んでみてください。イベントのクリーンアップを実装する優れた方法を示しています。

于 2012-07-22T16:31:44.080 に答える