Jquery 与AJAX相关的内存泄漏

Jquery 与AJAX相关的内存泄漏,jquery,ajax,memory-leaks,Jquery,Ajax,Memory Leaks,我正在使用jQuery 3.1.0和UWamp 3.1.0来运行这个脚本 我想创建一个可以连接到服务器的脚本,以便执行一系列重复任务;该服务器不属于我的域 我将仅从AJAX调用开始发布代码,因为我认为它们是导致泄漏的原因 第一部分连接到一个预先计算的链接,并下载一个要连接的其他链接列表(解析器只返回给定URL的内容) 响应总是包含多个链接,我需要连接到第一个链接,再执行几个调用,然后才能继续第二个链接,然后是第三个链接,以此类推。 链接存储在数组URL中 // Connects to t

我正在使用jQuery 3.1.0和UWamp 3.1.0来运行这个脚本

我想创建一个可以连接到服务器的脚本,以便执行一系列重复任务;该服务器不属于我的域

我将仅从AJAX调用开始发布代码,因为我认为它们是导致泄漏的原因

第一部分连接到一个预先计算的链接,并下载一个要连接的其他链接列表(解析器只返回给定URL的内容)

响应总是包含多个链接,我需要连接到第一个链接,再执行几个调用,然后才能继续第二个链接,然后是第三个链接,以此类推。
链接存储在数组URL中

    // Connects to the first link in the list
    console.log("Request to: " + urls[0]);
    urls[0] = $.post("php/parser.php",
        {
            url: urls[0]
        },
        function(res, state) {
            console.log(0 + ": completed");
        }
    );
    for(var y = 0; y < urls.length;/*y++*/) {
        $.when(urls[y]).done(function(res) {
            // Other calls here
            console.log("Doing stuff");
            // Continuing with the next link
            y++;
            if(y < urls.length) {
                console.log("Request to: " + urls[y]);
                urls[y] = $.post("php/parser.php",
                    {
                        url: urls[y]
                    },
                    function(res, state) {
                        console.log(y + ": completed");
                    }
                );
            }
        }, function(res) {});
    }
});
//连接到列表中的第一个链接
log(“请求:+URL[0]);
URL[0]=$.post(“php/parser.php”,
{
url:url[0]
},
功能(res、state){
控制台日志(0+“:已完成”);
}
);
对于(变量y=0;y
现在: 在Chrome/IE上,只会执行前两个调用,因为$when(URL[y]).done()永远不会被触发,因为URL[0]。state()始终等于pending

在Firefox上,如果我调试代码,一切都会顺利运行(垃圾邮件按f10键进入下一条指令会带来6秒的执行时间),而如果我让代码自己运行,就会出现一些问题,从console.log()不显示消息到浏览器每秒占用数百兆内存(虽然进展非常缓慢),但大约30秒后会导致浏览器崩溃。
更精确一点的数据,取自任务管理器;当不执行脚本时,Firefox使用480MB内存:
调试->在6s内最多500 MB的RAM
在30秒内运行->高达7GB的RAM
(我打开了很多其他选项卡,如果有任何变化的话)

我对js/jQuery/php完全是个新手,上网并没有帮我找到任何解决方案;如果有经验多一点的人能花点时间研究一下,我将不胜感激。提前感谢

编辑:我通过同步所有调用解决了这个问题,但我仍然对查找泄漏发生的原因感兴趣

    // Connects to the first link in the list
    console.log("Request to: " + urls[0]);
    urls[0] = $.post("php/parser.php",
        {
            url: urls[0]
        },
        function(res, state) {
            console.log(0 + ": completed");
        }
    );
    for(var y = 0; y < urls.length;/*y++*/) {
        $.when(urls[y]).done(function(res) {
            // Other calls here
            console.log("Doing stuff");
            // Continuing with the next link
            y++;
            if(y < urls.length) {
                console.log("Request to: " + urls[y]);
                urls[y] = $.post("php/parser.php",
                    {
                        url: urls[y]
                    },
                    function(res, state) {
                        console.log(y + ": completed");
                    }
                );
            }
        }, function(res) {});
    }
});