chrome内存溢出问题需要我们在开发者工具中去定位。
一边情况下去记录两次的操作后的内存情况,第一次,是记录首次操作后的内存情况,第二次是操作后的内存使用情况,然后进行对比。
废话少说看图。
第一次操作后内存使用情况:
第二次操作后内存使用情况:
分析总结:
从两次操作的记录对比结果可以看出:system、array、string、closure增加的最多,就可以得出结论,代码里的全局变量定义的多,数组和字符串也占用了很大的内存,同时闭包在使用后没有清理,导致占用的内存增多。然后就可以从这些方面去优化。
定位占内存的代码:比如闭包
上面就很明显定位到了代码:匿名函数导致的问题
一般如果是简单的代码,我们可以直接在开发者工具里定位,然后去找到代码,但是一般工程代码都是压缩的,在开发者工具里很难定位,需要去未压缩的代码里具体分析。
当然上图只是内存变化的显示,到具体的代码里就要具体去分析,主要有下面几个方面:
1,执行结束后清理定时器。
2,闭包执行完成后,将引用的局部变量赋值为null
3,清理dom上绑定的事件监听,同时将引用的dom设置为null
4,减少全局变量的使用,例如window
5,尽量使用原型对象去定义函数
6,不要使用eval,with等关键字和方法