【发布时间】:2011-07-16 15:02:18
【问题描述】:
我很好奇 node.js 的嵌套函数模式如何与 v8 的垃圾收集器一起工作。 这是一个简单的例子
readfile("blah", function(str) {
var val = getvaluefromstr(str);
function restofprogram(val2) { ... } (val)
})
如果 restofprogram 是长时间运行的,那是不是意味着 str 永远不会被垃圾回收?我的理解是,使用 node 你最终会得到很多嵌套函数。如果在外面声明了restofprogram,这是否会被垃圾收集,所以str不能在范围内?这是推荐的做法吗?
编辑我不打算让问题复杂化。那只是粗心,所以我修改了它。
【问题讨论】:
-
我相信 V8 的垃圾回收非常聪明。如果你把它作为额外的措施,它会得到GBed??
-
我也希望清空它应该收集它。但是,符号可能仍会占用符号表中的空间。
-
有很好答案的相关问题:How are closures and scopes represented at run time in JavaScript(有更好的代码示例),About closure, LexicalEnvironment and GC(有很好的范围检查器截图)
标签: javascript node.js v8