2012-06-02 103 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)。