AJAX 呼び出しを使用してサーバーから JSON オブジェクトを繰り返しフェッチしています。時間の経過とともに、ブラウザーのメモリ使用量が増加します (Chrome、Safari、Firefox で試行)。Chrome のヒープ スナップショットを使用して、タイムスタンプ文字列が参照なしで残っていることを発見しました。一連のスナップショットを取得すると、文字列の数が増え続けていることがわかります。
$(function() {
var latestTimestamp = 0;
function fetchData() {
$.get("/parameter?format=json&since=" + latestTimestamp, gotData)
}
function gotData(data) {
latestTimestamp = data['timestamp'];
setTimeout(fetchData, 250);
}
fetchData();
});
その他の注意事項:
- jQuery 1.7.1 を使用しています。編集: 1.6.2 と 1.4.2 で試したところ、同じ問題が発生しました。
- JSON オブジェクトの
timestamp
は、実際には文字列ではなく整数です。では、蓄積された文字列は一時的な値である可能性がありますか? - AJAX リクエストから を削除
+ latestTimestamp
すると、リークが停止します。 - setTimeout (20ms) を速くすると、リークが速くなります。速いタイムアウトが原因かもしれないと思ったので、250ms に減らしましたが、それは役に立ちませんでした。