我有一个 JavaScript 应用程序,使用 XMLHttpRequest 来获取和解析大约 60,000 个 XML 文档。然而,IE 的内存使用量快速增加,最终程序崩溃。我怀疑这与 IE 的 JScript 垃圾回收有关。以下是我的代码的简化版本:
在代码上面,我声明了两个变量:
当代码开始运行时,我设置了xmlhttp的值:
脚本然后进入主循环:
在代码上面,我声明了两个变量:
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()
}
谷歌浏览器可以正常运行代码,没有错误。然而,IE在循环大约2000次后就会崩溃并显示“内存不足”错误。难道垃圾回收器没有起作用吗?我能否重写我的代码以避免问题?
setTimeout(readXML, 0)
- 但是使用onreadystatechange事件的正确方式,您将不需要它。 - ThiefMaster