gpt4 book ai didi

javascript - 这个功能可以被垃圾收集吗?

转载 作者:IT老高 更新时间:2023-10-28 23:12:44 26 4
gpt4 key购买 nike

考虑一下这 block 蛋糕...嗯,代码:

'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 的构造函数中的函数完成......

  1. Promise 对象是否可被垃圾回收?
  2. doMoreWork() 是可回收垃圾吗?

我的猜测是 doMoreWork() 不能直接被 GC-ed 因为 Promise 保留对它的引用,但是一旦 Promise 的主体完成并将执行上下文返回到上层 (?) 范围,堆栈展开(因为这里没有要执行的语句)并且 Promise 变得无法访问,因此可以被垃圾回收。

你能确认我对这个话题的理解是正确的吗?

我如何凭经验观察这种行为? 换句话说,我如何监控哪些对象正在被 GC 以及何时?我纯粹在 Node.js 中开发,如果这有什么不同的话。

最佳答案

没有任何东西保留对 promise 的引用,因此它将被垃圾收集。 promise 是唯一保持对函数 doMoreWork 的引用,因此它也会被垃圾回收。

How could I empirically observe this behaviour? In other words, how can I monitor what objects are being GC-ed and when? I develop purely in Node.js, if that makes any difference.

V8 中的 GC 不一定会收集对象。例如,如果这是您的整个程序,那么首先运行任何 GC 都是浪费时间。

关于javascript - 这个功能可以被垃圾收集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com