我再论IE的内存泄漏
时间:2010-12-20 来源:simon4545
jQuery 的Remove对节点的回收是 有问题的。会形成许多dom孤点。多次循环后内存会有轻微增加。并不影响太大。
而jQuery对事件的回收,这里,并不是这么容易产生内存泄漏的。要具备两个条件:
1.dom节点其它对象(activex object,dom,object)产生循环引用,其实是交叉引用。而非object引用object(jQuery),起因ie中对dom的内存管理和js的内存管理并不是一套机制。
2.当这个dom节点被”简单“删除后,就会表象成内存泄漏,刷新也无法回收。
如果按照这样(leak1.html 附件,这里就是标准的内存泄漏)的引用,的确会有问题,内存会激增,并且刷新也无法回收。
但我们知道jquery中的dom节点,一般是被封装在了$()中,我们用的事件绑定不再是简单的交叉引用。
在这个环节中,它已经被转变成为js的对象间的引用,从Ie6到ie8其实都已经处理的很完全。而jQuery最后也适时的完成了cleanData和removeEvent. 内存可以回收,也不存在泄漏。(leakj.html,请自已拷jquery的js文件引用。)
上面的图和分析可以看出来,jqery在事件的内存回收方面是没有问题的。附件供大家参考。
以上的结果可以用ie的内存监测工具,比如 Drip或sIEve之类的。
相关阅读 更多 +
排行榜 更多 +