`await Promise.all` 和 `X = await Promise.all` 之间的内存使用会发生变化吗?

Will memory usage change between `await Promise.all` and `X = await Promise.all`?

例如,如果每个 promises 解析为一个具有 1 个字节的值,并且承诺的数量为 100,000

await Promise.all(promises) // not capture the return value

X = await Promise.all(promises) // capture the return value

显然,后一个至少要花费 100,00 字节,但是第一个呢?
V8 会做一些优化来减少第一个的内存使用吗?

不分配 await Promise.all() 的结果仅意味着该结果将立即符合垃圾回收条件。结果仍然由 Promise.all() 创建,因为它不知道您是否要使用它。

因此,这是否会与您的 X = await Promise.all(...) 产生任何差异完全取决于 X 可用于垃圾回收的时间。如果您立即使用结果,然后 X 超出范围并很快符合垃圾回收条件,那么内存使用情况可能没有差异,因为该值将被创建,然后以两种方式在相似的时间进行垃圾回收。

另一方面,如果 X 保留很长时间(比如存储在一些持久的数据结构中),那么它的内存使用当然会持续一段时间。

Will V8 does some optimizations to reduce memory usage for the first one?

没有