私はBackbonejs
とRequirejs
を使用して、1ページのWebアプリケーションを作成しています。 私のアプリにmemory leaks
があるようです。Backbonejs Appのメモリリークの問題
テスト用にサンプルコードを作成しました。ビューオブジェクトを作成し、render
関数を呼び出し、返されたhtml
をDOM
に添付します。
返されたhtml
はbutton
です。ボタンをクリックすると、そのcallback
はビューが破棄される機能destroy
を呼び出します。
しかし、chrome heap profilier
を実行すると、まだdetached DOM tree
が表示されています。それを深く見れば、references
がjQuery
によって保持されていることがわかります。
これはメモリリークかどうかは疑問です。 はいの場合、mycodeは参照を保持していません。 問題はjQuery
にありますか?
サンプルコードはlinkです。
ヒープスナップショットのスクリーンショットも添付しました。バックボーンを使用して構築
この問題を解決を願って幸運 の最高一般的なアドバイスとして:この種の問題に対処するときは、各要素を分離してください:requirejsを取り除いて、デバッグ中の処理が少ないようにしてください。もう一つのアドバイスは、バックボーン1.0.0にアップグレードし、この種の問題に対処するために正確に導入された新しい 'listenTo'と' stopListening'関数を利用することです。ビューで 'remove'を呼び出すと' stopListening'も呼び出されることに注意してください。 – namero999
@gustavohenkeバックボーンにメモリリークの問題はありません。それらは開発者によって作成されています:) –
メモリの問題がある場合、すべてのハンドラの場所を確認し始めます。おそらく、removeが処理しないビューによって暗黙的に設定されているハンドラがあります。 – adrian