使用JQuery调用JSONP Ajax会导致内存泄漏

时间:2013-08-07 15:28:18

标签: jquery ajax performance memory-leaks garbage-collection

我已经搜索了一整天而且找不到问题为什么我的phonegap应用程序会出现如此大的内存泄漏问题,该应用程序使用了大量的ajax-jsonp请求到服务器。

因此我将其分解为最简单的例子。你可以找到它here on jsfiddle

它的主要内容是:

function run(){
   $.ajax({
        dataType: 'jsonp',
        url: "http://thawing-bayou-7281.herokuapp.com/test.js",
        success: function (res) {
            // some stuff here
            setTimeout(run, 250);
        }
    });
};
run();

所以这段代码每隔250ms就会调用一次jsonp api请求。

请注意: 我知道这是一个你永远不会实现的例子!它只是用于检测内存泄漏。

当我运行此示例时,已用内存会迅速增加(您可以在Chromes Timeline选项卡中看到它最佳)。 enter image description here DOM节点的数量也在迅速增加。在某些时候它崩溃了(可能是一些GC?)但元素和所需的内存迅速增加。

你们有谁知道如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:4)

这不是内存泄漏,锯齿类型图在java中很常见。内存使用率上升,垃圾收集器被调用,然后下降。您展示的图表就是这种情况。

如果图表的低点不断增加,则会出现内存泄漏,而图表中没有显示。