【发布时间】:2015-03-30 08:38:05
【问题描述】:
考虑一下这块蛋糕...嗯,代码:
'use strict'
function doWork () {
return new Promise(function (resolve, reject) {
// work work work...
// Done! But... where's the resolve() ???
})
}
doWork().then(function doMoreWork () {
// Some more work to do...
})
一旦 Promise 的构造函数中的函数完成......
-
Promise对象是否可被垃圾回收? -
doMoreWork()可回收吗?
我的猜测是 doMoreWork() 不能直接被 GC-ed 因为 Promise 保留对它的引用,但是一旦 Promise 的主体完成并将执行上下文返回到上层 (?) 范围,堆栈就会展开(因为那里is no more statements here to be executed) 并且 Promise 变得无法访问,因此可以被垃圾回收。
你能确认我对这个话题的理解是正确的吗?
我如何凭经验观察这种行为? 换句话说,我如何监控哪些对象正在被 GC 以及何时?我纯粹在 Node.js 中开发,如果这有什么不同的话。
【问题讨论】:
-
你的意思是你的工作从不调用
resolve()?是的,在这种情况下,您的所有对象都会立即被 gc 怀疑。
标签: javascript node.js garbage-collection v8