Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的无引用javascript对象在哪里存在,存在多长时间?_Javascript_Garbage Collection - Fatal编程技术网

我的无引用javascript对象在哪里存在,存在多长时间?

我的无引用javascript对象在哪里存在,存在多长时间?,javascript,garbage-collection,Javascript,Garbage Collection,SomeObj对象在什么时候被垃圾收集?一旦不再使用,它就有资格被垃圾收集。 这意味着在您的案例中,在构造函数调用之后 实际发生的及时程度取决于实现细节。如果遇到GC问题,您需要深入研究特定的Javascript引擎。一旦不再使用它,它就有资格进行垃圾收集。 这意味着在您的案例中,在构造函数调用之后 实际发生的及时程度取决于实现细节。如果遇到GC问题,需要深入研究特定的Javascript引擎。没有从任何地方引用的对象在程序视图中根本不“存在”。它在内存中的驻留时间取决于解释器的垃圾收集特性,以

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

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


实际发生的及时程度取决于实现细节。如果遇到GC问题,您需要深入研究特定的Javascript引擎。

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


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

没有从任何地方引用的对象在程序视图中根本不“存在”。它在内存中的驻留时间取决于解释器的垃圾收集特性,以及何时/是否需要收集它


在您的特定情况下,对象在创建后立即有资格进行垃圾收集,并且表达式生成的引用未被使用(例如,在赋值中)。事实上,对象可能根本就不会被创建,优化编译器可以很容易地全部创建—它没有副作用,也没有返回值。

没有从任何地方引用的对象从程序的视图中根本不“存在”。它在内存中的驻留时间取决于解释器的垃圾收集特性,以及何时/是否需要收集它


在您的特定情况下,对象在创建后立即有资格进行垃圾收集,并且表达式生成的引用未被使用(例如,在赋值中)。事实上,一开始可能根本无法创建对象,优化编译器可以很容易地创建一个对象-它没有副作用,也没有返回值。

在执行settimout的回调之后。好的。。那么为什么我仍然可以使用SomeObj对象呢?假设SomeObj引用一个DOM元素,如下所示:var o=this$(#foo”).click(function(){$(this.html(++o.i)});你评论中的第二个例子与问题中的例子有什么关系?当然,其中的
o
不会被垃圾收集,因为它仍在使用中(与问题中的
newsomeobj
不同)。我无法确定对象何时被垃圾收集,因为我不知道对象存在于何处。第一个示例不清楚。在执行settimout的回调之后。确定。。那么为什么我仍然可以使用SomeObj对象呢?假设SomeObj引用一个DOM元素,如下所示:var o=this$(#foo”).click(function(){$(this.html(++o.i)});你评论中的第二个例子与问题中的例子有什么关系?当然,其中的
o
不会被垃圾收集,因为它仍在使用中(与问题中的
newsomeobj
不同)。我无法确定对象何时被垃圾收集,因为我不知道对象存在于何处。第一个例子并不清楚。
var SomeObj = function() {
    this.i = 0;
};

setTimeout(function() {
    new SomeObj; // I mean this object
}, 0);