我的无引用 JavaScript 对象存在在哪里以及存在多长时间

Where and for how long does my referenceless javascript object exist?

本文关键字:存在 长时间 在哪里 我的 引用 JavaScript 对象      更新时间:2024-01-17
var SomeObj = function() {
    this.i = 0;
};
setTimeout(function() {
    new SomeObj; // I mean this object
}, 0);

SomeObj 对象在什么时候被垃圾回收?

一旦不再使用,它就有资格进行垃圾回收。这意味着在您的案例中紧跟在构造函数调用之后。

这实际发生的及时程度是一个实现细节。如果你遇到GC问题,你需要深入研究你的特定Javascript引擎。

未从任何地方引用的对象在程序视图中根本不"存在"。它仍然在内存中的某个地方驻留多长时间取决于解释器的垃圾回收特征,以及何时/是否需要收集它。

在您的特定情况下,对象在创建后立即符合垃圾回收条件,并且不使用表达式生成的引用(例如在赋值中(。事实上,对象可能一开始就根本不会被创建,优化编译器可以很容易地完全删除整个函数 - 它没有副作用,也没有返回值。