`
frankensteinlin
  • 浏览: 56441 次
  • 性别: Icon_minigender_1
  • 来自: ShangHai
社区版块
存档分类
最新评论

IE 内存泄漏

阅读更多
    IE的内存泄漏虽然早就名扬海内,但是没想到这次真的被它砸中了,一两年前写一的一个web应用,是放到手持终端上运行的,最近客户邮件说有一个页面连续执行了二三十次,IE就会崩溃。嗨,开始我还理直气壮的说:当初开发的时候就说明我们只保证PC上正常(应为没有拿到手持终端,作为开发测试机),现在PC上访问这个页面访问个四五十次都很正常啊。
    回了邮件,程序调出来在运行一下,不看不知道,一看吓一跳,taskmanager里的IE内存使用量随着我鼠标的点击次数斜线上升啊,而且就像现在的物价一样,上去了就下不来了。看来肯定是javascript有问题。
     有问题咋办google倒是发现了一片文章微软自己写的,“俺们有泄漏呀,俺们有泄漏,原理告诉你啊,咋办自己想!” 【http://msdn.microsoft.com/en-us/library/bb250448(VS.85).aspx
      再来研究代码,把用过的变量全部都设置成NULL 不顶用。自己能控制的都控制住了,只有bafflo是拿来就用的。是不是这个里面有循环引用的问题?客户那边在催,这边要把bafflo的代码研究一遍这可太费事了。俺是懒人,想到了个懒主意,不就是循环引用么,俺把它的引用能断掉的都断掉不就得了,暴力破解!
      javascrip的对象就是一棵树,深度优先遍历一把,把里面的对象都设置能null。想到就干:
var setNullObj_loop=['undefined','function'] 

function continueSkipSetNull(obj,field){
	var typeo=""+typeof(obj);
	
	if (obj==null) return true;
	if (setNullObj_loop.include(typeo)){
		
		return true;
	}else{
		
	}

	return false
}                      
                       
function setNullObj(obj,depth){
	if (!depth) depth=4;
	//var rs=""
	if (continueSkipSetNull(obj)) return ;
	
    for ( var o in obj){
    	if (continueSkipSetNull(obj[o],o)){
    		continue;
    	}   	
      if (typeof(obj[o]) == "object"){
    	  depth=depth-1;
    	  if (depth>0){
    	     setNullObj(obj[o],depth)
    	  }
    	  try{
    		  obj[o]=null
    	  }catch(ex){
    		  
    	  }
		}else{
	    	  try{
	    		 obj[o]=null;
	       	  }catch(ex){
	       		  
	       	  }
		}
    }
    obj=null
	
 }



然后就把那些可疑的script对象都放到函数里面null 一把
    setNullObj([userObj,buffalo,varCargoNo])


   再来运行下,跑了三十遍,taskmanager里的IE 内存使用量就像上海那个倒塌的13层大楼一样,横在哪儿不起来了!嗯 交货。
   客户的反馈让俺大吃一惊,他竟然在手持终端上搞了100个回合,回信说满意!太有毅力了,这样的测试人员很好很强大啊!
2
0
分享到:
评论
2 楼 jy1245626 2009-07-03  
兄弟能不能把上面的代码加点注释呢

非常感谢
1 楼 252831020 2009-07-03  
   

相关推荐

    IE内存泄露分析工具:sIEve/Drip

    Drip则是另一种用于检测IE内存泄漏的工具,它的全称是“Dr. memory for Internet Explorer”,同样能够识别和报告可能导致内存泄漏的代码。与sIEve不同,Drip可能包含更高级的分析功能,如堆栈跟踪和内存泄漏的实时...

    ie内存泄露监控软件

    "ie内存泄露监控软件"是专门针对IE浏览器设计的一种工具,旨在检测和分析IE客户端可能出现的内存泄露情况。内存泄露是指程序在分配内存后未能正确释放,随着时间的推移,会导致系统资源逐渐耗尽,影响应用程序的性能...

    Drip 检测IE内存泄漏

    标题 "Drip 检测IE内存泄漏" 提到的是一个专门用于检测 Internet Explorer (IE) 浏览器内存泄漏的工具,名为 Drip。内存泄漏是编程中的一个常见问题,尤其是在JavaScript环境中,由于IE浏览器的内存管理机制,这个...

    脚本IE内存泄露检测.rar

    标题中的“脚本IE内存泄露检测.rar”表明这是一个专门针对Internet Explorer浏览器的JavaScript内存泄漏检测工具。内存泄漏是编程中常见的问题,特别是在处理大量数据或长时间运行的网页应用时,可能导致浏览器性能...

    ie内存泄漏检测软件

    **IE浏览器内存泄漏详解** IE浏览器,全称Internet Explorer,是微软公司开发的一款经典网络浏览工具。在过去的几十年里,IE浏览器曾是全球最广泛使用的浏览器之一。然而,随着技术的发展,IE浏览器的一些问题逐渐...

    sIEve-0.0.8(IE Sieve_检测IE内存泄露情况)

    **sIEve-0.0.8:检测IE内存泄露情况** 在互联网浏览器的世界中,Microsoft Internet Explorer(简称IE)曾经是主流的选择。然而,由于其在性能和稳定性上的问题,尤其是内存泄露问题,IE逐渐失去了市场份额。内存...

    sIEve IE内存泄露监控

    `sIEve IE内存泄露监控` 是一款专注于检测和分析Internet Explorer(简称IE)浏览器内存泄漏问题的工具。它作为一个绿色软件,无需安装即可直接运行,为用户提供了一种方便的方式来检测网页在IE浏览器中可能导致性能...

    IE内存泄漏检测工具 Drip-0.5

    **IE内存泄漏检测工具Drip-0.5详解** 在Web开发中,内存泄漏是一个常见的问题,尤其是在使用老版本的Internet Explorer(IE)浏览器时。IE由于其独特的内存管理机制,常常会出现JavaScript(JS)内存泄漏的情况,这...

    IE内存泄露之JQuery html(),append()

    本文将深入探讨标题中提到的"IE内存泄露之JQuery html(),append()"这一问题,它涉及到JavaScript库JQuery在Internet Explorer浏览器中的特定使用场景下可能导致内存泄露的现象。 首先,我们要理解什么是内存泄露。...

    IE内存泄露

    标题“IE内存泄露”指的是在使用Internet Explorer浏览器时,由于程序设计或实现的缺陷,导致内存资源无法正确释放,从而持续占用系统内存,随着时间推移可能导致系统性能下降甚至崩溃的问题。这种现象在早期版本的...

    测试JavaScript在IE中的内存泄露

    2. **内存泄漏类型**:常见的JavaScript内存泄露包括全局变量、闭包引用、DOM元素引用、事件监听器等。了解这些类型有助于识别潜在问题。 3. **工具使用**:利用如IE Developer Tools(F12工具)、Chrome DevTools...

    JavaScript闭包技术及IE内存泄漏分析.pdf

    JavaScript闭包技术及IE内存泄漏分析

    IE 内存检测工具

    sIEve是一款专为检测IE内存泄漏设计的开源工具。它通过监控IE浏览器进程,收集内存分配和释放的信息,分析并报告可能存在的内存泄漏问题。sIEve能帮助开发者识别哪些对象或脚本导致了内存占用的异常增长。使用方法...

    css样式和内存泄漏

    文件“ie内存泄漏.doc”和“IE浏览器.doc”可能专注于这些特有问题的解析。内存泄漏的解决方案可能包括正确使用闭包、避免全局变量、利用window周期事件进行资源清理等。 “常见兼容问题.doc”可能汇总了各种类型的...

    Android webview 内存泄露的解决方法

    最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递getApplicationContext。 1.避免在xml直接写webview...

    IE内存监控sIEve-0.0.8

    "IE内存监控sIEve-0.0.8" 是一个针对Internet Explorer浏览器的内存监控工具,其版本号为0.0.8。这个工具专门设计用于检查和分析IE浏览器在运行时的内存使用情况,帮助用户或开发者识别可能导致性能问题或者内存泄漏...

    内存泄露检测工具

    10. IE Leak Detector (Drip/IE Sieve):是一个网页开发工具,用于检测 IE 中的内存泄漏问题。 IE Leak Detector 工具可以检测 IE 中的内存泄漏问题,并提供了详细的错误信息,以便开发者快速解决问题。 11. ...

    内存泄漏检测工具

    针对这个问题,专门的“内存泄漏检测工具”应运而生,如“js内存泄漏检测工具”和“IE Javascript leaks detector”。 1. **JavaScript内存管理** JavaScript的内存管理主要依赖于垃圾回收机制(Garbage ...

    javascript内存泄露问题的解析

    在Mozila和Opera浏览器中,虚拟PF利用率与Question1相同,但是在IE浏览器中,我们可以看到由于内存泄漏而产生的每秒一兆的虚拟内存的稳定增量。这表明了内存泄漏的问题更加严重。 内存泄露问题的解决方案: 1. ...

Global site tag (gtag.js) - Google Analytics