1、$.extend()的使用不当,内存泄漏
//浅拷贝
$.extend(object1,object2);
//浅拷贝建议直接使用赋值,上面的写成:
object1 = object2;
//深拷贝导致IE内存泄漏
$.extend(true,object1,object2);
//轮询的时候发现,用上面的方法,会造成泄漏
//改成下面结构泄漏消除
var object1 = $.extend(true,{},object1,object2);
2、html()内存泄漏
//轮询的时候,每隔5秒调用一次html,导致DOM泄漏,内存增加
$(element).html("hello");
//html用innerHTML代替,泄漏消除
$(element)[0].innerHTML = "hello";
这里要简单理解下jQuery html()和innerHTML的区别,innerHTML是原生方法,写入字符串没有问题,所有浏览器都支持。但是如果写入<script>代码,innerHTML在firefox、chrome等浏览器不能执行写入的脚本代码。
但是jQuery html()支持写入<script>标签,并能执行写入的脚本。
3、重复绑定导致内存泄漏
//jQuery中绑定的一般方法,如果是轮询绑定,绑定前一定要先解除绑定
jQuery.on()
jQuery.bind()
jQuery.live()
jQuery.delegate()
//解除绑定的方法
jQuery.off()
jQuery.unbind()
jQuery.undelegate()
4、empty()使用不当,内存泄漏
本想用empty()来清空某个element,但使用后,导致内存泄漏,原因还真不详,也许该去分析下jQuery的源代码了。