下面的setTimeout JavaScript代码是否泄漏?

时间:2016-02-12 08:06:31

标签: javascript memory-leaks garbage-collection

我有一个循环浏览网站图标的方法:

function LoopFavIcon(isRed){
 if(!tabInFocus)
 {
    isRed = GetBoolean(isRed, false);

    if(isRed)
    {
        $($('head link')[0]).attr("href", "favicon.ico");
    }
    else
    {
        $($('head link')[0]).attr("href", "favicon_red.ico");
    }
    setTimeout(function f83(){
        LoopFavIcon(!isRed)
    }, 700);
 }}

内存时间线似乎会添加内存,而不会发生GC:

Increasing heap memory

测量的时间间隔可能不足以让GC启动,但我有疑虑。提前谢谢!

1 个答案:

答案 0 :(得分:1)

你还没有表现出GetBoolean中的内容,但假设它没有做某事它不应该,不,没有内存泄漏那段代码。你只是没有运行它足够长时间来做GC。 (Chrome的工具也可以让你强制使用GC。)

请记住,垃圾收集环境的一个关键方面是环境将在需要时进行垃圾收集,而不是之前。