私のjavascriptアプリケーションでは、オブジェクトAJAX
を取得するための呼び出しを行うときに大きなメモリリークが発生しJSON
ます。コードは本当に単純です:
function getNewMessage()
{
new_message = []; // this is global variable
var input_for_ball = [];
var sum;
var i;
var http = new XMLHttpRequest();
http.open("GET", url + "/random_ball.json", false);
http.onreadystatechange = function()
{
if(http.readyState === 4 && http.status === 200)
{
var responseTxt = http.responseText;
input_for_ball = JSON.parse('[' + responseTxt + ']');
}
}
http.send(null);
new_message = input_for_ball;
}
これは1ミリ秒ごとに呼び出され、ご覧のとおり、同期呼び出しです。この機能は1秒ごとに1MBかかります。
AJAX
次のような変数に割り当てる代わりに使用する場合:
input_for_ball = JSON.parse('[0,0,0,0,0,0,0,0,0,0]');
その後、そのすべてが完璧です。AJAX
したがって、呼び出しの実装にエラーがあるはずです。jQuery AJAX
これは私がcallを使うときにも起こりました。
2013年12月3日更新
以下で説明するように、これTom van der Woerdt
は実際には意図された動作でした。提案さMatt B.
れているように、非同期呼び出しを可能にするためにいくつかのコードを書き直しましたが、それは大いに役立ちました。これで、アプリケーションのメモリ消費量は安定して小さくなりました。