3

来源:互联网 发布:medline数据库中文 编辑:程序博客网 时间:2024/06/10 04:27

4. 浏览器自身bug
对于IE Object leaks,同JS对象泄漏检测。
IE8的,据我测试,sIEve用的是IE7内核,所以无能为力,也是同3的方法。

三、定位并解决
1. 组件泄漏
找到没销毁的,扩展onDestroy,在其中销毁掉。

2. 组件内部泄漏
定位泄漏的Dom节点关联的代码,查检有没有调用removeNode移除,有没有循环引用
具体的不好讲,原因非常多,可以边改边用sIEve看效果。
注意: 请开启Ext.enableListenerCollection = true;这个配置,以便Ext自动回收孤立Dom节点上的事件。默认只会将孤立节点从Ext.elCache中移除,而不会清理事件,可能会导致泄漏。另外需注意Ext每30秒才清理一次,注意分辨。

3. JS对象泄漏
这个没啥办法。。。只能调快操作长时间运行查看平均增长,然后一步步改代码排除了……

4. 浏览器自身bug
IE Object leaks:
参考Ext的解决方案,将对象for in循环复制一份,替换旧的。
IE 8 bug:
尽量避免重复创建form, button, input, select, textarea, a, img, object这些Dom节点,能替换就替换,能复用就复用。 
因为我处理的内存泄漏大部分都是排除法定位并解决的,现在除了sIEve能查看Dom节点泄漏,没啥好用的工具能检查与之相关的JS对象的情况。从而导致只能靠蒙来找到造成泄漏的代码。

原创粉丝点击