假设我使用var
和new
实例化一个大对象。在我完成它之后,我可以通过将其设置为null
来“释放”它吗?这是Javascript GCs寻找的东西吗?
答案 0 :(得分:2)
垃圾收集对任何其他对象未引用的对象感兴趣。因此,请确保应用程序中的任何位置都没有引用(数组等)
答案 1 :(得分:1)
您可以通过将变量设置为null
来中断引用,但不会破坏任何其他引用。
在对象可以GC之前,所有引用都需要单独分解。
所以,是的,如果对该变量所持有的对象的唯一引用,则将其设置为null
将为最终GC释放它。
答案 2 :(得分:0)
因为我没有说明,你需要打破所有引用,以便变量有资格进行垃圾收集。如果您无法追踪对特定对象的最后一次引用,则这可能是一项艰巨的任务,因此请使用可用的工具执行此任务。我个人使用Chrome的堆配置文件,您可以阅读in the chrome docs。
另外,请注意,只有非原始类型通过引用传递(因此只有非原始类型可以进行GC)。