backboneJS で構築されたクイズ アプリケーションがあり、3 つのビューがあります。全体的な進行状況と戻る/次へのボタンを表示する QuizView。質問のグループと各質問の QuestionView を含む PageView。
ユーザーがクイズの次のページに移動すると、ページ自体とすべての質問で Backbone の remove() を呼び出す destroy 関数を呼び出して、現在の PageView を削除します。(すべてのリスナーは listenTo でアタッチされます)
これを行った後、DOM ノードがメモリ タイムラインに反映されなくなることを期待しています。Chrome 開発ツールからの DOM ノード数のビューを添付しましたが、新しいページに移動すると増加することがわかります。
また、ヒープ スナップショットも取得しました。デタッチされた DOM アイテムを見ると、保持ツリーに 1 つのアイテムを持つ 1 つのアイテム (ページの div コンテナー) がすべて含まれています。これが収集されていない理由だと思います。
DOM ノード数が継続的に増加する理由について、誰か洞察を提供できますか?
また、これはPageViewの私の破棄機能です:
destroy: function(){
console.log("PageView :: destroy " + this)
_.each(this.childViews, function(view){
view.remove();
});
this.remove();
}