【发布时间】:2012-08-24 03:23:28
【问题描述】:
我希望找到任何有关优化垃圾收集或防止对象随着时间推移在内存中堆积的实践的信息。
例如,假设我有一个连续迭代,并且每次将一个项目添加到一个对象。
随着时间的推移,添加到对象中的旧项目不再与应用程序相关,应该从对象中删除,它们将永远不会再被访问。是否有必要专门删除这些值,还是会继续构建成一个巨大的对象?
谢谢!
【问题讨论】:
-
垃圾收集器永远不会删除被指向的对象。如果您有
myObject = ...并且确定不再需要它,只需设置myObject = null即可断开链接。 -
你永远不需要说
myObject = null,只要让它在超出范围时自动收集即可。 -
如果您使用该对象并且它具有冗余属性,那么这些属性将不会被清除,因为您稍后可能会访问它们。
-
@jbabey 当然,这会自动破坏链接。我所说的必须对全局变量进行。但更重要的是,对于 JS 对象和 DOM 对象之间的链接,应该这样做。这些可能会导致内存泄漏,尤其是在每个人都喜欢的浏览器中。
-
@Imp 或者不使用全局变量! :P
标签: javascript