gpt4 book ai didi

javascript - 为什么 'delete' 不检查垃圾收集器的属性?

转载 作者:行者123 更新时间:2023-11-29 21:58:09 25 4
gpt4 key购买 nike

运行这样的代码后:

var index = 0;

var interval = setInterval(function(){
for(var i = 1000; i--;){
var key = "key" + index++;

window[key] = index;

delete window[key]
}
}, 100)

我在时间轴(谷歌开发者工具)中看到内存在几秒钟内增加了大量内存,而当我强制 GC(时间轴中的 GC 按钮)时它并没有减少。

如果此属性无法从窗口访问并且没有其他引用,为什么 GC 不清除它?

最佳答案

将我的评论移至答案,并添加来自其他评论的信息:

你的循环添加然后立即删除引用,在编译语言中,这甚至可能被完全跳过。在您的情况下,它发生得如此之快,以至于您看不到内存有任何变化。

此外,垃圾收集不是一个持续的过程。通常,GC 只会在需要更多内存时运行。这样可以压缩开销并避免在不需要时运行 GC(程序可能会在达到内存限制之前结束,所以为什么要在结束之前费心收集)

编辑 您看到消耗的内存可能是由于您设置的时间间隔。在没有间隔的情况下尝试类似的例子。只是一个使用新的本地声明数组的循环

关于javascript - 为什么 'delete' 不检查垃圾收集器的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369906/

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