javascript - 完成后,Node.js GC 键中的 Object.keys(o).forEach(...) 迭代是否会发生?

标签 javascript node.js memory-leaks garbage-collection

基于this answer ,这将“将所有键加载到内存中”:

Object.keys(o).forEach(function(key) {
  var val = o[key];
  logic();
});

完成后内存是否“释放”?或者是否需要“nulled ”,或类似的东西?

最佳答案

是的,forEach 完成后,内存将被隐式释放,因为之后堆栈上的任何内容都不会再引用 Object.keys 创建的数组。 (顺便说一句,没有可以取消的变量)

你也可以这样写

{
    const keys = Object.keys(obj);
    keys.forEach(function(key) {
        const val = o[key];
        logic();
    });
}

更明显的是,整个 keys 数组在迭代过程中都在闲置(与“惰性”for in 枚举相反),而且(当 block 结束时)它立即超出范围。

关于javascript - 完成后,Node.js GC 键中的 Object.keys(o).forEach(...) 迭代是否会发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357605/

相关文章:

android - AdMob 消耗更多内存

javascript - 如何将 div 放入 flex 的 div 中?

javascript - 如何在 promise 链中传递变量?

javascript - 页面加载时的 JWT 身份验证

javascript - 使用 IE Javascript 泄漏检测器有困难

c# - 银光记忆

javascript - lowerCamelCase,忽略字符串的第一个字母

javascript - Emberjs不会加载jquery/javascript,在页面中插入html时运行代码

javascript - 如何将 "2016-02-23T11:31:36.23"转换为JavaScript对象?

javascript - res/req 是关键字吗?或者您可以随意命名它们吗?