Javascript中在什么时候可能出现内存泄露?如何解决?

Javascript中在什么时候可能出现内存泄露?如何解决?

阅读 3.8k
2 个回答

先无耻地引用一下 @nightire 的答案(很长) http://segmentfault.com/q/1010000000455219#a-1020000000455584

然后我试着一句话回答一下

最常见的内存泄露源于DOM事件绑定,尤其是带着事件的dom反复创建、移除的时候,泄露的多少取决与处理函数的闭包范围内有多少内存。常见的避免方法是

  • 不要动态绑定事件
  • 不要在动态添加,或者会被动态移除的dom上绑事件,用事件冒泡在父容器监听事件

    • 如果要违反上面的原则,必须提供destroy方法,保证移除dom后事件也被移除,这点可以参考Backbone的源代码,做的比较好
  • 单例化,少创建dom,少绑事件

啊超过一句了,就这样吧,最后是一个建议,学学用开发工具来定位内存泄露的位置,比问这个问题,然后没头苍蝇地去猜要好。怎么用网上可以搜,最开始贴的 @nightire 的答案里也有涉及

滥用闭包的可能导致内存泄露

推荐问题
宣传栏