私の webapp では、サーバーから送信されたページ フラグメントに基づいていくつかの DOM 要素を作成します。新しいフラグメントはすべて、jsp ページ内で生成された一意の ID を持つ div です。
ページフラグメントの一部としても送信されるスクリプトタグを使用して、この div 内の要素のイベントに登録すると思います。
これは、私のページフラグメントがどのように見えるかです。
<script>
$(document).ready(function() {
var myButton = $("#<unique_tab_id").find(".myButton);
myButton.click(clickFunction);
function clickFunction() {
}
});
</script>
<div id="<unique_tab_id">
<button class="myButton">
My Button
</button>
</div>
時間の経過とともに、いくつかの div が追加され、ページから削除されます。削除は、jquery replaceWith または remove 関数を呼び出すだけのユーザー アクションに基づいて行われます。
新しい要素が追加されます。jqueryが自動的にイベントの登録を解除すると仮定して、イベントに対して何もしません。
私の仮定は正しいですか?このコーディング スタイルでメモリ リークが発生する可能性はありますか? しばらくするとページの速度が低下します。これは、メモリ使用量の増加によるものです。私はここでメモリをリークしていますか?
$(document).ready() で定義されている関数にはクロージャが含まれています。しかし、対応する div が削除されると、それらはアクティブではなくなると想定しています。そうですか?ここで他に何がメモリをリークする可能性がありますか。
詳細を確認したい場合は、次のコードをご覧ください: https://github.com/C4G/V2V/blob/f4dd780ff5bf1d3b1d456d421602038500769fd9/war/WEB-INF/jsp/donors/addDonorForm.jsp