假设我们有一个对象池(又名数组)。然后我们Constructor.apply(obj,arguments)。Javascript GC应用现有对象
var obj = objectPool[nextAvailableIndex];
obj.index = nextAvailableIndex;
nextAvailableIndex += 1;
Constructor.apply(obj, arguments);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这对现有的Obj有什么影响?内存是否被重用?这是否有助于避免GC?它是不是基本上与新的一样,还是相似但不同?
我应该把更多的代码放在这里。这是一个对象池。假设pool [100]不再需要,我们想重用它。所以var obj = pool [100]; ...; constructor.apply(obj,arguments);然后我们把obj放回池中[100]。需要回答的问题是:1)新的vs适用的,我们要重复使用记忆,还是要创造新的东西。如果是这样,那么对象池是一个没用的想法,因为它在应用时不会阻止GC。我没有回答我的问题。也许我的糟糕,但似乎重新解释的问题。 – FreddyNoNose
如果你使用'apply',那么每次都使用同一个对象,但是每当你使用'new'时,就会创建一个新的对象。在这种情况下,如果您将obj放回池中,那么您将重新使用内存,但是如果您具有零池的引用,那么该池将被垃圾收集。 –
谢谢。我也曾想过,但是我发布前一天的一位朋友说服我错了。猜猜我对自己的信仰失去了信心。 – FreddyNoNose