垃圾收集-现代javascript和nodejs



我很好奇javascript中的垃圾收集是什么时候发生的(特别是在node.js上)

(async() => {
let data = await getBigBlobFile()
const name = data.name
data = null //is this necessary?
longAsyncFunction(name, (err, res) => {
if (err) throw err
return res
})
})()

在这个伪代码中,是否需要手动将数据设置为null ?

我不确定当引用超出块时是否发生GC,或者是否足以让编译器在块结束之前不再使用"数据"?我需要它被释放,而异步函数正在运行。
我看到评论说现代的引擎会自动做到这一点,但我似乎找不到任何支持这一点的东西。

在大多数情况下,当不再需要变量的作用域时,将对该变量进行垃圾收集。将变量设置为null是不必要的,它实际上与C/c++中null的含义不同。

理解JavaScript中的变量作用域是很重要的,因为闭包在很多设计模式中扮演着重要的角色。NodeJS是基于Google的V8引擎,它确实可以自动处理所有GC。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Managementhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

最新更新