Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery$.ajax内存泄漏?_Jquery_Ajax_Firefox_Memory Leaks - Fatal编程技术网

jQuery$.ajax内存泄漏?

jQuery$.ajax内存泄漏?,jquery,ajax,firefox,memory-leaks,Jquery,Ajax,Firefox,Memory Leaks,为什么jQueryAjax会在Firefox和其他浏览器上造成可怕的内存泄漏 jsfiddle: 如果在Firefox这样的浏览器中运行此功能,会导致内存增加。还有谁见过这个吗?有没有办法用jQuery ajax阻止内存泄漏?谢谢 $.ajax({ url: "http://ws.geonames.org/searchJSON", dataType: "jsonp", data: { featureClass: "P", style: "f

为什么jQueryAjax会在Firefox和其他浏览器上造成可怕的内存泄漏

jsfiddle:

如果在Firefox这样的浏览器中运行此功能,会导致内存增加。还有谁见过这个吗?有没有办法用jQuery ajax阻止内存泄漏?谢谢

$.ajax({
    url: "http://ws.geonames.org/searchJSON",
    dataType: "jsonp",
    data: {
        featureClass: "P",
        style: "full",
        maxRows: 12,
        name_startsWith: "M"
    },
    success: function( data ) {
        setInterval(function() {
            get_some_stuff();
        }, 1000);
        load_count = load_count + 1;
        $('body h1').text('load_count: ' + load_count);             
    }
})

这是因为您正在从
getsomestuff()
函数中调用
setInterval()
<代码>设置间隔用于在指定的时间间隔内反复运行函数。你的问题是因为所有那些注册函数调用(通过
setInterval
)都是每秒执行的,而且有很多调用。

这是因为你是从
获取一些东西()
函数中调用
setInterval()
<代码>设置间隔用于在指定的时间间隔内反复运行函数。您的问题是因为所有这些注册函数调用(通过
setInterval
)都是每秒执行的,而且有很多调用。

ajax请求成功后,您将递归调用
get\u some\u stuff()
。此外,每次ajax请求完成时,都会设置一个在1秒后调用函数的循环。每次调用ajax时,都会调用另一个循环。如果这种情况持续1000个周期,您将有1000个循环,所有这些循环都将调用
get\u some\u stuff()
函数。

ajax请求成功后,您将递归调用
get\u some\u stuff()
。此外,每次ajax请求完成时,都会设置一个在1秒后调用函数的循环。每次调用ajax时,都会调用另一个循环。如果这种情况持续1000个循环,您将有1000个循环,所有这些循环都将调用
get_some_stuff()
函数。

我想您应该执行SetTimeout而不是SetInterval

试试这个


我想您应该执行SetTimeout而不是SetInterval

试试这个


我最近遇到了一个类似的问题,对json web服务的重复ajax调用导致了严重的内存泄漏,即使没有对json对象本身进行任何处理

我猜jQuery中有一个bug。将您的数据类型更改为“text”,然后使用不使用eval()的库解析结果响应,我认为这是导致泄漏的原因


我在这里找到了这个图书馆。到目前为止,它运行良好,尽管它使用了更多的CPU

我最近遇到了一个类似的问题,对json web服务的重复ajax调用导致了严重的内存泄漏,即使没有对json对象本身进行任何处理

我猜jQuery中有一个bug。将您的数据类型更改为“text”,然后使用不使用eval()的库解析结果响应,我认为这是导致泄漏的原因


我在这里找到了这个图书馆。到目前为止,它运行良好,尽管它使用了更多的CPU

这段代码是否包含在
获取一些东西
中?这都是JSFIDLE URL,您在这里试图实现什么?你想让它正常运行1000次。有没有理由让两个ajax请求同时出现?在打下一个电话之前,你不想等待你的回复吗?还是我遗漏了什么?@anaprentice--非常感谢!这段代码是否包含在
获取一些东西
中?这都是JSFIDLE URL,您在这里试图实现什么?你想让它正常运行1000次。有没有理由让两个ajax请求同时出现?在打下一个电话之前,你不想等待你的回复吗?还是我遗漏了什么?@anaprentice--非常感谢!是的,但在1000次运行后,它将停止,这就是为什么会有一个计数器。@apreprentice我认为您知道方法
setInterval
是错误的,这是语法:
setInterval(code,毫秒,lang)
,因此循环之间的等待时间为毫秒,不是它将被执行的次数是的,但这些函数仍在继续执行,因为
setInterval
,它每秒钟执行所有这些函数。@des,是的--对不起,我是响应您答案的预编辑版本,然后编辑我的注释以响应您的编辑。再次查看您的答案,我发现您已经完全纠正了我最初的抱怨。@des+1 SetInterval()很可能是这里的真正问题;然而,您可能应该删除您的初始语句,因为get_some_stuff()是用来调用自身的。但是在运行1000次之后,它将停止,这就是为什么会有一个计数器。@apreprentice我认为您知道方法
setInterval
是如何错误的,这是语法:
setInterval(code,毫秒,lang)
,因此,循环之间的等待时间是毫秒,而不是它将被执行的次数是的,但这些函数一直在执行,因为
setInterval
,它每秒钟执行所有这些函数。@des,是的--对不起,我是在响应您答案的预编辑版本,然后编辑我的评论以回应您的编辑。再次查看您的答案,我发现您已经完全纠正了我最初的抱怨。@des+1 SetInterval()很可能是这里的真正问题;然而,您可能应该删除初始语句,因为get_some_stuff()是用来调用自身的。