JavaScript のメモリ リークに問題があります。
私はFirefox 用の Leak Memory 0.4.5 拡張機能を使用しています。これは、まだメモリに残っている JavaScript オブジェクトを表示します。
イベントなどから dom-object を正しくバインド解除する方法がわかりません。
たとえば、「dropdownbox」という jQuery ウィジェットがあります。destroy メソッドでは、次のようなイベント ハンドラーのバインドを解除するために必要なものをすべて作成します。
this.box.find('.toggler').unbind();
this.box.remove();
this.box = null;
この 3 行は必須ですか、それとも this.box.remove() だけを呼び出すことは可能ですか?
今日まで、DOM 要素から何かをアンバインドしたりクリアしたりしたことはありません。しかし、同じサイトで 2 時間開発した後、Firefox が 1GB を消費するという問題が発生しました。
クロージャなどを使用するときのメモリ リークを少し読みました
。
すべてにクロージャーを使うべきではないと言う人もいます。たとえば、次のコードがあるとします。
function foo(param1, param2) {
var local1, local2;
$('a').click(function() {
alert('YEAH');
});
}
次のようにするとよいでしょう。
funtion foo(param1, param2) {
var local1, local2;
$('a').click(clickEvent);
}
function() {
alert('YEAH');
}
それとも私はそれを誤解していますか?