У меня есть приложение JavaScript, которое использует XMLHttpRequest для получения и анализа около 60 000 документов XML.Тем не менее, использование памяти IE быстро растет, и в конечном итоге программа падает.Я подозреваю, что это связано с IE JScript GC.Ниже приведена упрощенная версия моего кода:
Над кодом я объявляю две переменные:
var xmlhttp;
var xmlDoc;
Когда код запускается впервые, я устанавливаю значение xmlhttp:
xmlhttp = new XMLHttpRequest();
Затем сценарий входит в основной цикл:
function loadXML() {
xmlhttp.abort();
xmlhttp.open("GET", url, false);
xmlhttp.setRequestHeader('Content-Type', 'text/xml', 'Pragma', 'no-cache');
xmlhttp.send("");
while (xmlhttp.readyState != 4) { }
xmlDoc = xmlhttp.responseXML;
setTimeout("readXML()",0);
}
function readXML() {
//Reads the XML.
//If all data has been retrieved, exit loop.
//Else, change the url and go back to loadXML()
}
Google Chrome прекрасно выполняет код без ошибок.Тем не менее, IE зацикливается около 2000 раз, прежде чем вылетает с ошибкой «Недостаточно памяти».Сборщик мусора не выполняет свою работу?Могу ли я переписать свой код для предотвращения проблем?