Я работаю над сценарием, который извлекает и затем анализирует большое количество документов XML.Соответствующая часть кода показана ниже.(URL был скрыт для конфиденциальности. Звездочки в коде на самом деле отсутствуют, они используются для справки позже в вопросе)
var xmlhttp = new XMLHttpRequest();
var xmlDoc;
var chunk = parseInt(1, 10);
var subChunk = parseInt(0, 10);
var indvCount = parseInt(0, 10);
var total = parseInt(0, 10);
var max = parseInt(5000, 10);
var end = parseInt(chunk, 10) * parseInt(20, 10);
var start = parseInt(end, 10) - parseInt(19, 10);
function loadXML() {
xmlhttp.abort();
*xmlhttp.open("GET", "URL-GOES-HERE?start=" + start + "&end=" + end, false);
xmlhttp.setRequestHeader('Content-Type', 'text/xml', 'Pragma', 'no-cache');
xmlhttp.send("");
while (xmlhttp.readyState != 4) { }
xmlDoc = xmlhttp.responseXML;
readXML();
}
function readXML() {
while (subChunk < 20) {
*indvCount = xmlDoc.getElementsByTagName("Value")[subChunk].childNodes[0].nodeValue;
total = parseInt(total, 10) + parseInt(indvCount, 10);
subChunk = parseInt(subChunk, 10) + parseInt(1, 10);
}
chunk = parseInt(chunk, 10) + parseInt(1, 10);
subChunk = parseInt(0, 10)
end = parseInt(chunk, 10) * parseInt(20, 10);
start = parseInt(end, 10) - parseInt(19, 10);
if (chunk > max) {
alert(total);
} else {
loadXML();
}
}
Когда chunk
равноок.5000 или больше, я получаю ошибку Out of Memory
.Ошибка обычно относится к одной из строк кода со звездочкой.Используя диспетчер задач Windows, я могу подтвердить, что использование памяти в Internet Explorer остается на уровне 6000 КБ, поэтому я не думаю, что у меня есть утечка памяти.
Кто-нибудь знает способ предотвратить это?