代码之家  ›  专栏  ›  技术社区  ›  Karim

释放Javascript中未连接的DOM节点使用的内存

  •  5
  • Karim  · 技术社区  · 16 年前

    作为我的应用程序的一部分,我正在组装一组不会同时显示的小Dom节点。我将它们存储在内部数组中。用户可以调用它们的显示,在这种情况下,我会将它们重新分配给用于显示它们的div。这一切都很好。但是,当需要用新的替换所有它们时,我想销毁旧的(有效地释放它们)。否则,随着时间的推移,内存使用量可能会呈指数级增长。如何强制浏览器js引擎执行此操作?仅仅将Dom节点数组中的每个项目设置为null就足够了吗?我还有别的事要做吗?或者也许我根本不用担心这个?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Kevin Babcock    16 年前

    如果将每个项目设置为null,它们将被自动垃圾回收。

        2
  •  5
  •   kmkaplan    16 年前

    是的,将项目设置为null应该是可以的,但Internet Explorer必须处理一些实现细节:它对循环引用的处理是不可靠的。看见 http://msdn.microsoft.com/en-us/library/bb250448.aspx

    循环引用当计算Internet Explorer的COM基础结构和任何脚本引擎之间的相互引用时,对象可能会泄漏内存

    所以你 在某些情况下打破循环引用。