昨天打开一个门户网站的时候发现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
分享到:
相关推荐
总的来说,这两个工具是开发者诊断和修复IE浏览器内存问题的强大武器。它们可以帮助优化网页应用的性能,提高用户的浏览体验。了解如何使用这些工具,以及如何解读它们生成的报告,对于提升Web开发技能和解决问题至...
"ie内存泄露监控软件"是专门针对IE浏览器设计的一种工具,旨在检测和分析IE客户端可能出现的内存泄露情况。内存泄露是指程序在分配内存后未能正确释放,随着时间的推移,会导致系统资源逐渐耗尽,影响应用程序的性能...
**IE浏览器内存泄漏详解** IE浏览器,全称Internet Explorer,是微软公司开发的一款经典网络浏览工具。在过去的几十年里,IE浏览器曾是全球最广泛使用的浏览器之一。然而,随着技术的发展,IE浏览器的一些问题逐渐...
标题"测试JavaScript在IE中的内存泄露"表明我们将讨论如何检测和分析JavaScript在IE浏览器中的内存泄露问题。在IE中,由于其JavaScript引擎(JScript)的一些特性,如活动对象模型(ActiveXObject)和遗留的COM组件...
2. **IE浏览器中的内存泄漏**:IE浏览器对JavaScript对象的内存管理有其特殊性,如DOM对象、闭包和全局变量等处理不当都可能导致内存泄漏。此外,IE的ActiveX控件和BHO(Browser Helper Object)也可能造成内存泄漏...
"新版IE浏览器源代码" 提供了一个深入了解浏览器内部工作原理的机会,特别是对于那些对前端开发、浏览器内核或者系统级编程感兴趣的开发者而言。这个资源可能包含了构建和修改IE浏览器功能的原始代码。 描述中提到...
`sIEve IE内存泄露监控` 是一款专注于检测和分析Internet Explorer(简称IE)浏览器内存泄漏问题的工具。它作为一个绿色软件,无需安装即可直接运行,为用户提供了一种方便的方式来检测网页在IE浏览器中可能导致性能...
使用这类工具时,开发者首先需要在IE浏览器中打开测试页面(如test_ie.html),然后运行内存泄漏检测工具(sIEve)。在模拟用户操作或者长时间运行应用后,工具将分析内存使用情况,指出可能存在的泄漏点。开发者...
在Mozila和Opera浏览器中,虚拟PF利用率与Question1相同,但是在IE浏览器中,我们可以看到由于内存泄漏而产生的每秒一兆的虚拟内存的稳定增量。这表明了内存泄漏的问题更加严重。 内存泄露问题的解决方案: 1. ...
标题中的“IE浏览器网页网址监控”指的是通过编程技术来跟踪和记录用户在Internet Explorer(简称IE)浏览器上访问的网页地址。这通常涉及到浏览器帮助对象(Browser Helper Object, BHO)的开发,这是一种特殊的COM...
【标题】"C# 写的IE浏览器"指的是使用C#编程语言重新实现的一个Internet Explorer(简称IE)浏览器。在软件开发中,使用C#来编写浏览器是常见做法,因为C#提供了强大的.NET Framework和现代化的开发工具,使得构建...
该工具可以帮助开发者识别和定位IE浏览器中的内存泄漏问题,提升网页在IE下的性能。 4. **使用方法** 用户可以通过`IEJSLeaksDetector.exe`来运行该工具。首先,打开需要测试的网页,然后运行检测工具,它将分析...
“JS关于ie的内存泄漏与javascript内存释放资料.doc”和“Js内存泄漏及解决方案.doc”可能详细解释了JavaScript中如何发生内存泄漏,尤其是在IE浏览器中的特殊情况。IE浏览器因为其独特的内存管理机制,如活动对象链...
2. **内存快照**:在使用sIEve之前,用户应先打开IE浏览器并加载要测试的网页或应用。然后,在sIEve中获取一个初始的内存快照,这将是后续比较的基础。 3. **监控与分析**:当浏览器执行操作(如加载新页面、刷新、...
**sIEve与JSLeaksDetector:深入理解IE浏览器内存泄漏** 在互联网技术发展的早期,Microsoft的Internet Explorer(IE)浏览器是市场上的主导者。然而,IE浏览器存在一个显著的问题,那就是内存泄漏。为了帮助开发者...
标题中的“IE浏览器IFrame对象内存不释放问题解决方法”是指在使用Internet Explorer(IE)浏览器时,特别是在涉及IFrame对象的场景下,可能会遇到内存管理的问题。IFrame是一种可以在网页中嵌入其他HTML页面的元素...
总结,sIEve-0.0.8是解决IE浏览器内存泄漏问题的利器,它使得开发者能够更有效地诊断和解决因DOM操作不当引发的内存泄漏,从而提升Web应用程序的性能和稳定性。对于任何在IE环境下工作的JavaScript开发者,理解和...
它能帮助开发者定位IE中的内存泄漏问题,通过对IE进程的内存分析,提供关于哪些对象占用内存过大的信息。sIEve-0.0.8.exe是这个工具的一个老版本,尽管现在Internet Explorer的使用已经减少,但对于仍然需要支持IE的...
13. **IE的内存泄漏**:IE浏览器在处理DOM对象时可能存在内存泄漏问题,合理管理DOM节点和事件监听器可减轻这个问题。 14. **Flash和Silverlight**:对于视频、音频或交互式内容,虽然现代浏览器更倾向于HTML5,但...
使用方法通常是启动sIEve,然后在IE浏览器中打开待测试的网页,当怀疑出现内存泄漏时,sIEve会显示相关的泄漏信息,包括泄漏对象的类型、大小以及可能的泄漏源。 **Drip-0[1].5(web内存泄漏检测工具).exe** Drip,...