`
sunwei_1002
  • 浏览: 11784 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

IE浏览器内存泄露

阅读更多
    昨天打开一个门户网站的时候发现IE浏览器有点卡,这个时候打开了任务管理器查看了一下,发现IE浏览器进程的内存竟然达到了423,145K,记得平时浏览这个网站的时候还很正常,这个网站的JS广告代码很多,怀疑JS导致IE发生了内存泄漏,因此打算来检测一下,用的工具是IE的插件js memory leaks dector,但是从新进行了一些可能引起内存泄漏的操作后,发现测试的结果好像并没有问题,没有发现关于内存泄漏的地方。这个时候想到会不会是IFRAM没有被销毁,加重了ie浏览器的负担,损耗了大量的内存使用。

    怀着一探到底去决心,去网上查找了一些技术文档,发现用SIEVE来测试此类系统的IE内存泄漏时,通常在报表刷新的过程中,通常是会发生IE的内存泄漏的,因此,用SIEVE从新测试了一下,果然跟网上说的一样,登录后,内存泄漏显示位58,在报表每次刷新的时候,内存泄漏显示+1,在切换报表的时候,内存泄漏在原基础上又增加了7,然后再退出的时候,内存泄漏由原来的77一下增加到了1200多。通过此工具记录下的发生内存泄漏的ID和TAG名称,可查找出发生内存泄漏的代码。

    关于内存泄漏这个词的理解,其实比较通俗简单的意思就是已经不再被使用的资源,哪些资源实际上是应该被释放的资源,而现在程序里面并没有被释放除去,所以导致程序占用的内存一直在增多的现象。针对IE浏览器发生的内存泄漏,引起IE内存泄漏的主要情况为js对象实例跟dom对象的相互引用、“内部函数引用(Closures)”以及DOM插入顺序泄漏,其中最常见的就是js对象实例跟dom对象的相互引用,对基于对象的JScript,一个通常用法是通过封装JScript对象来扩充DOM对象,在构建的过程中,通常在涉及DOM对象时,建立一个对DOM对象的引用,DOM对象也建立一个指向JS对象实例的引用,这就形成了一个循环,虽然不管js调用dom还是从dom反向找到实例都非常方便,但如果在对象销毁或document unload的时候不去解除他们之间的引用,就会引起内存泄漏。JS的GC可以识别循环,当对dom节点和事件处理函数的引用消失,会自动回收,但是IE自己的内存管理器并不识别循环,因此占用的内存没有被回收,就会发生内存泄漏。例如:我在用IE浏览器访问当前的页面进行刷新时,由于在之前还访问了别的页面占用的内存一直没有释放,导致程序占用的内存不断的升高。

Java leak memorys detector通过在访问每个URL结束时给出测试解果,如果IE在访问当前页面的过程中没有发生内存泄漏,那么URL显示为绿色,如果发生了内存泄漏,显示为红色,通过这个软件我们可以记录下发生内存泄漏的详细信息,左侧部分显示发生内存泄漏的代码位置为粗体字,在中间的两格中显示详细信息与CALL STACK,右侧显示发生内存泄漏的完整的代码。

SIEVE通过在地址栏输入要访问的系统地址来进行操作测试,中间直接显示要访问的系统界面,下栏显示COM和DOM的使用情况,右侧显示实时数据:内存使用情况,内存泄漏等,如果发生内存泄漏可以通过右侧数据看出,然后点击show leaks的按钮可以看到发生内存泄漏的详细信息如ID等,不过不是所有发生内存泄漏的都会被记录下所有的详细信息,只有很少一部分ID被记录下来,还可通过界面上的自动刷新按钮对系统进行刷新,代替了手工刷新。但是此工具使用起来占用内存很大,进行操作比较多后会无响应,有些操作还会引起工具自动关闭,在复制出内存泄漏信息时只能选择全部的详细信息,不能滤掉一些没有必要的信息和空信息,造成使用不是很方便。

    写在最后,关于IE浏览器内存泄漏的查找确实是一件比较麻烦的,首先要求工作人员本身需要拥有一定的内存泄漏的查找经验,更重要的是需要有一定的耐心,当然,如果你有一个好用的工具查找起来会更加的方便有效,其实我个人对于IE浏览器的内存泄漏测试和查找我也是处于刚刚学习起步的状态,此次整个研究的过程希望与大家一起来分享经验,大家共同的学习进步。

文章引用地址:http://www.iefans.net/ieliulanqi-neicunxielou-yanjiu/ 作者:iefans
分享到:
评论
1 楼 sunwei_1002 2010-06-05  
FireFox和chrome浏览器在dom上remove一个节点时,都能释放该dom所占用的内存,而IE却不能释放,不能不怀疑IE的浏览器的内存释放问题。

相关推荐

    ie内存泄露监控软件

    ie客户端测试内存泄露工具,内置ie浏览器

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

    NULL 博文链接:https://softwarexiang120.iteye.com/blog/1917669

    测试JavaScript在IE中的内存泄露

    测试JavaScript在IE中的内存泄露,很好用的一个工具

    DWR内存兼容及无法调用问题解决方案

    经过再次查询,得知IE浏览器有自己的一个垃圾回收的函数:CollectGarbage(); CollectGarbage,是IE的一个特有属性,用于释放内存的使用方法嘛应该是,将该变量或引用对象,设置为null或delete 然后在进行释放动作在做...

    Avant browser 2011 build 27||占用内存最小的浏览器~

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    jquery zTree 树状导航

    * 【修正 v2.6 beta】对于zTree大容器进行图层隐藏、显示切换时,IE浏览器下出现 未知的运行时错误。(Line:547) 已解决,利用 setTimeout 避免了与其他控件产生冲突 * 【修正 v2.6 beta】zTreeNodeCache 在反复 ...

    IIS进程回收导致定时器失效的解决方法(CMD命令)

    公司开发的网站使用的.net,网站中用到了定时器,放在Global.asax.cs文件中,但由于IIS设置了网站进程定期回收,回收后定时器也就没了。....bat文件如下,直接运行该.bat,发现会用IE浏览器打开www

    呼叫中心(软航呼叫中心)

    纯IE浏览器操作界面,无需安装客户端软件,只需一次安装服务器系统即可,其它电脑即可网络查看。 2. 基于业界流行的开放式.NET4.0技术,支持XML/WebService/SOA,易于扩展和与其它CRM、ERP系统集成。 。 3. 最新...

    qqkav

    注册表修复:一键修复EXE、COM、BAT、TXT等多项系统文件关联、修复系统不能显示隐藏文件、解除病毒对注册表编辑器及任务管理器的锁定、修复IE的ITS协议漏洞、清除病毒木马在注册表中的加载值、清除病毒的注册表残留...

    Avant Browser 2010 build 116简体中文版

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏 览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,...

    Avant Browser 2010 build 130

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    Avant Browser 2011 beta 10||发布于201..05.04

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    Avant Browser 2010 build 103

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    Avant Browser USB版 2010 build 103

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    YC++编译器网页浏览器

    YC还具有Internet网页浏览功能,有望将来替代目前流行的IE浏览器。如果用YC把各种应用软件嵌入在Web页面中,那么,用户只要点击链接地址,立刻就可以执行存放于世界各地的服务器中的任何软件,并可以实时地与...

    Avant Browser 2011 build 16

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签 死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,...

    Avant浏览器(爱帆浏览器) v2018 build 7 Lite版.zip

    1、多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 2、在线书签:通过Avant的在线存储可以任何...

    EditPlus V3.70.320 中文

    * TR1 正则表达式错误导致内存泄露 * 粘贴命令不工作, 如果剪贴板文本为不可用的 Unicode * 如果路径包含 '.', 则 .txt 文件扩展名不能被自动追加 * 文字加亮不能在拆分窗格进行加亮 * 如果出现多个候选, 则 '转...

    Avant Browser 2010 build 126

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

Global site tag (gtag.js) - Google Analytics