JQuery实现局部刷新时内存溢出的一种解决方法(菜鸟的第一笔,多多包涵)
时间:2010-09-05 来源:菜鸟老了
案例描述:
在用JQuery实现对客户端请求的不间断监听,并用post方法实现局部刷新的时候,发现客户端浏览器在经过一个多小时后会因为内存溢出而崩溃。追踪后发现JQuery在实现局部刷新的过程中,由于内部机制会导致内存的增加。特别是在数据到达客户端并处理完后,内存使用增加明显(具体原因不明,应该是JQuery自身机制的问题。有明白的可以砸几块砖头让我也明白明白,谢谢!)。由于在脚本中嵌套调用脚本本身,客户端内存持续上升,直至客户端内存溢出。
本以为是由于JQuery的数据处理机制才导致的客户端内存溢出,所以就采用了XMLhttpRequest来实现局部刷新,但是发现仍然会导致内存溢出,只是内存溢出的时间比用JQuery的慢(又是个不懂的地方)。
解决过程:
在束手无策的情况下,师傅告诉了我window.clearTimeout(id)这个函数。把它加到代码里面后,结果发现:如果采用的是XMLhttpRequest实现局部刷新,内存溢出的情况得到了解决。但是,如果采用的是JQuery实现的局部刷新,则内存继续溢出(继续请求知道内幕的大侠们拍砖)。
结论:
这个结论不代表唯一性和正确性,仅供参考。
我用XMLhttpRequest代替了JQuery的ajax实现了页面的监听并且不会导致客户端的内存溢出。
造成客户端内存溢出的代码如下:
function GetNewTel(){ setTimeout("GetNewTel()", 5 * 1000); //每五秒执行一次 $.post("page",param,function(returnText){}); //在代码追踪的过程中,造成内存使用增加的最大元凶在post执行完后JQuery内部机制的调用。 }
相关阅读 更多 +