javascript - Firefox console.log 阻止 JavaScript String 被垃圾收集?

标签 javascript string firefox garbage-collection

使用以下代码,每当启用 console.log 时,o.big 引用的字符串将不会被垃圾收集。一旦我删除日志语句,大字符串的内存就会在处理程序函数执行完成后被释放。

我使用的是 Firefox 9.0.1,内存分析是通过 about:memory 完成的。

$(function() {  
    var handler = function() {  
      var o = {};  
      o.big = (new Array(20*1024*1024)).join("x");  
      console.log(o.big);  
      delete o.big;  
    };  

    $("#btn").click(handler);
});

我是 JavaScript 的新手,如果有人能向我指出为什么在 console.log 中使用 String 不会被 gc 标记,那就太好了。

最佳答案

虽然我不太熟悉 Firefox/Firebug 对 console.log() 的处理,但我假设显示“已记录”对象的控制台提供了一种检查它并与之交互的方法。至少 Chrome 是这样。

因此,控制台需要对对象的引用,该对象将保留在内存中,并且在控制台释放引用之前不能被垃圾回收(这可能要等到托管脚本的页面重新加载后才会发生)。

最后,请记住 delete operator 之间没有明确的关系和垃圾收集。

关于javascript - Firefox console.log 阻止 JavaScript String 被垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728739/

相关文章:

javascript - 如何在javascript中验证手机号码?

javascript - 如何为 react 应用程序配置动态子路径

javascript - 将调用函数添加到一个对象的所有字符串

C++ - include <string> 错误

css - span 标签可以在 Firefox 中继承其输入的高度父级吗?

HTML链接问题

javascript - Flexslider 上的文本叠加

android - 使用android在字符串中添加双引号

html - fontawesome 图标在谷歌浏览器上无法正确呈现

javascript - 在列表项上显示隐藏的 div