0

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();
}

タイムライン ビュー ヒープのスナップショット

4

2 に答える 2