gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:34:20 24 4
gpt4 key购买 nike

使用以下代码,每当启用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com