2

Backbone.js で、10K の写真にスケーリングするためのシングル ページ アプリを構築しています。Chrome の制限をテストして、この webkit のバグに遭遇するかどうかを確認しようとしています:

画像の追加および削除時の無制限のメモリ増加

instanceof Backbone.View を使用して DOM ツリーに JPG をロードし、DOM ツリーに次のように呼び出して削除します。

// myThmbnailView instanceof Backbone.View
myThumbnailView.undelegateEvents();
myThumbnailView.remove();

ThumbnailView にはイベント ハンドラーが宣言されておらず、すべてが親の GalleryView に委任されます。

ChromeDevTools のタイムラインによると、ページに 1000 個の DOM ノードがあります (各 ThumbnailView には 20 個の DOM 要素が含まれています) が、サムネイルを繰り返し処理して削除しても解放されません。ここにスナップショットがあります

タイムライン スナップショット

ページからすべての DOM 要素を削除するための の最後の呼び出しでは$("body").children().remove()、タイムラインによると 18K の DOM ノードが残っています。ただし、GC はかなりのメモリを解放するようです。

孤立したノードがありますか、それともタイムラインのバグですか? この問題へのアプローチは間違っていますか?

4

0 に答える 0