2012-06-02 147 views
1

说我用varnew实例化一个大对象。在完成之后,我可以通过将其设置为null来“释放”它吗?这是什么JavaScript GC GC寻找?Javascript GC并将对象分配给null

+0

这可能会帮助您:http://stackoverflow.com/a/742666/1249581。 – VisioN

+0

只要尽量限制其范围,如果真的需要使用'delete'。 –

+0

@d_inevitable'delete'删除对象的引用,但不删除对象本身。但是,如果删除引用,则GC将更快地了解无用的对象数据。 – VisioN

回答

2

垃圾收集对对象感兴趣,它不被任何其他对象引用。因此,请确保您的应用程序中没有任何引用(数组等)

+0

https://www.youtube.com/watch?v=RWmzxyMf2cE这是Colt McAnlis关于Javascript和GC的一个很好的“会议”。很有趣:) –

1

您可以通过将变量设置为null来打破参考,但不会破坏任何其他参考。

所有引用都需要在可以GC对象之前单独打破。

所以是的,如果对该变量所持有的对象的唯一引用,那么将其设置为null将使其最终GC释放它。

0

因为我没有说明,您需要中断所有引用以使变量符合垃圾回收的条件。如果您无法追查最后一次引用特定对象,这可能是一项艰巨的任务,因此请使用可用于此任务的工具。我个人使用Chrome的堆分析器,你可以阅读关于in the chrome docs

此外,请注意,只有非基元类型通过引用传递(因此只有非基元类型可以GC'd)。