【问题标题】:JavaScript garbage collection on object data对象数据上的 JavaScript 垃圾收集
【发布时间】:2012-08-24 03:23:28
【问题描述】:

我希望找到任何有关优化垃圾收集或防止对象随着时间推移在内存中堆积的实践的信息。

例如,假设我有一个连续迭代,并且每次将一个项目添加到一个对象。

随着时间的推移,添加到对象中的旧项目不再与应用程序相关,应该从对象中删除,它们将永远不会再被访问。是否有必要专门删除这些值,还是会继续构建成一个巨大的对象?

谢谢!

【问题讨论】:

  • 垃圾收集器永远不会删除被指向的对象。如果您有 myObject = ... 并且确定不再需要它,只需设置 myObject = null 即可断开链接。
  • 你永远不需要说myObject = null,只要让它在超出范围时自动收集即可。
  • 如果您使用该对象并且它具有冗余属性,那么这些属性将不会被清除,因为您稍后可能会访问它们。
  • @jbabey 当然,这会自动破坏链接。我所说的必须对全局变量进行。但更重要的是,对于 JS 对象和 DOM 对象之间的链接,应该这样做。这些可能会导致内存泄漏,尤其是在每个人都喜欢的浏览器中。
  • @Imp 或者不使用全局变量! :P

标签: javascript


【解决方案1】:

如果是您的业务逻辑决定了它们的无用性,这意味着仍然存在对它们的引用,那么是的!您应该明确删除这些对象。在许多情况下,您会希望在破坏引用之前擦除对象,以确保您正在释放您打算释放的所有内容。

今年早些时候,Scirra 的 Ashley 写了一篇很好的入门文章:How to write low garbage real-time Javascript

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多