是什么导致我的控制台崩溃?

时间:2014-09-23 23:40:43

标签: javascript jquery performance memory garbage

我遇到了一些我编写的代码问题,这些代码遍历了一系列广告。 渲染函数在一个时间间隔内被调用(可配置,但设置为每50ms以帮助调试)。问题是,当此函数运行太多次时,控制台崩溃。在某些手机上,设备将完全耗尽内存并重新启动,我认为它与此功能有关(如果我将其取出,控制台不会崩溃):

var render = function(){
    if(ads.length < 1)
        return;
    if(!ads[adIndex]){
        adIndex = 0;
    }
    s = ads[adIndex].src;
    w = ads[adIndex].width;
    $(adContainer).html("<p>ADVERTISEMENT</p><img src = '" + s + "' width = '" + w + "'/>");
    adIndex++;
};

我认为这可能是内存泄漏,但我无论如何都不是内存专家。我能做些什么来优化这个功能并防止内存问题?

编辑:我正在调用这样的代码:

setInterval(function(){
        render();
    }, 50);

广告数组只是一个javascript Image()对象数组。

1 个答案:

答案 0 :(得分:0)

我认为问题出在代码之下。

$(adContainer)

您每次都创建了JQuery Object。

var $adContainer = $(adContainer);
var render = function(){
    if(ads.length < 1)
        return;
    if(!ads[adIndex]){
        adIndex = 0;
    }
    s = ads[adIndex].src;
    w = ads[adIndex].width;
    $adContainer.html("<p>ADVERTISEMENT</p><img src = '" + s + "' width = '" + w + "'/>");
    adIndex++;
};

然后我建议像这个循环的情况一样使用setTimeout

相关问题