私はいくつかの調査を行いました ( JavaScript クロージャーとメモリの問題) が、JS クロージャーとそれがメモリ リークにどのように影響するかを完全には理解していません。この質問をして理解を深めようとしているので、さらに調査を行っていますが、誰かがこれを見て問題を診断できるかどうかを確認したいと思いました。
Web サイトで jQuery を使用して、テーブル内のデータを更新しています。使用しているうちにゆっくりとメモリに忍び寄りますが、最大の問題は、ユーザーがページを更新すると、最大 3MB ジャンプすることです。ブラウザで他のタブを開くと同様の問題が発生し、数時間使用すると 200MB のメモリが使用される可能性があります。私の読書を通して、私は問題を自分のコードの閉鎖の問題に絞り込んだと思います。ほとんどの作業を行う主要な部分は次のとおりです。
$(document).ready(function(){
setDateSelect();
var url_fm_smry=url_fm_smry_base + url_fm_currdate2 + url_region;
$.getJSON(url_fm_smry,function(data)
{
$('#summaryContainer').empty();
$('#summaryTblTmpl') // Select the template.
.tmpl(data.d.results) // Bind it to the data.
.appendTo('#summaryContainer'); // Render the output.
});
$.getJSON(url_fm_meta + url_region,function(data)
{
$('#runDTM').empty();
$('#runDTMTmpl') // Select the template.
.tmpl(data.d.results) // Bind it to the data.
.appendTo('#runDTM'); // Render the output.
});
setInterval(summaryCall,5000);});
setDateSelect
今日の日付に基づいた可変日付のドロップダウン メニューをロードします。
url_fm_smry
は、他の関数がアクセスする必要がある 3 つのグローバル変数で構成されるローカル変数です。
summaryCall
上記とまったく同じことを 5 秒ごとに繰り返して、新しいデータ ストリームでテーブルを更新するだけです。
提案と助けをありがとう。