我知道Javascript有一个垃圾收集器。因此,使用 delete 仅删除对象的引用,当没有对该对象的引用时,它将被GC删除。
Javascript很棘手,包括闭包,模糊名称空间和原型继承,知道何时到现在或为什么并不总是显而易见。
我正在编写一个相当大的Javascript项目,并希望避免内存泄漏,同时限制全局内存使用。我根本没有处于优化阶段(让我们先把这些东西搞定:-)),但是为了避免编写糟糕的代码,知道内存管理的良好实践会很好。
答案 0 :(得分:10)
根据我的经验,根据浏览器的不同,垃圾收集器的实现很差/很差。应用良好的面向对象编程实践是一个良好的开端。
我唯一的建议:不要通过连接DOM和&创建内存泄漏javascript对象(DOM和JS GC不会清除的循环引用)。这些错误将比你在应用程序中实例化的任何对象占用更多的内存。
有关DOM / JS内存泄漏的更多详细信息。 http://msdn.microsoft.com/en-us/library/bb250448%28VS.85%29.aspx
答案 1 :(得分:5)
答案 2 :(得分:3)
我认为通过在DOM节点上存储数据,您可以轻松创建并非所有浏览器都能处理的循环引用。例如:
this.element = document.getElementById('something');
this.element.attachedObject = this;