search

Home  >  Q&A  >  body text

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

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

大家讲道理大家讲道理2901 days ago307

reply all(2)I'll reply

  • 天蓬老师

    天蓬老师2017-04-10 14:25:44

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

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

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

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

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

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

    reply
    0
  • 迷茫

    迷茫2017-04-10 14:25:44

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

    reply
    0
  • Cancelreply