【问题标题】:Garbage collection - modern javascript and nodejs垃圾收集 - 现代 javascript 和 nodejs
【发布时间】:2021-10-18 03:14:54
【问题描述】:

我很好奇垃圾收集何时在 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,或者是否足以让编译器在块结束之前不再使用“数据”?我需要在异步功能运行时释放它。
我见过 cmets 说现代引擎会自动执行此操作,但我似乎找不到任何支持。

【问题讨论】:

    标签: javascript node.js garbage-collection


    【解决方案1】:

    在大多数情况下,当变量的范围不再需要时,变量会被垃圾回收。将变量设置为null不是必须的,它实际上与C/C++中的null含义不同。

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

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

    【讨论】:

    • 感谢您的参考。我会尝试调查他们:)
    猜你喜欢
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2012-03-21
    相关资源
    最近更新 更多