`
luolonghao
  • 浏览: 119787 次
  • 性别: Icon_minigender_1
  • 来自: Shanghai
社区版块
存档分类
最新评论

IE内存泄露

阅读更多
<html>
    <head>
        <script language="JScript">
         var jsObject;
         function SetupLeak()
         {
                jsObject = document.getElementById("LeakedDiv");
                document.getElementById("LeakedDiv").expandoProperty = jsObject;
         }
     </script>
    </head>
    <body onload="SetupLeak()">
        <div id="LeakedDiv"></div>
    </body>
</html>


参考:http://blogs.msdn.com/gpde/pages/javascript-memory-leak-detector.aspx
分享到:
评论
9 楼 xuyao 2008-12-26  
lz听谁说IE里没有javascript,只有Jscript?难道你写成language="JavaScript",ie就不认了?。现在说的javascript一般是指ECMAScript,国际统一标准的javascript。所有主流的浏览器都支持,当然也包括IE
8 楼 luolonghao 2008-12-26  
hite 写道

        <script language="JScript">



我又迷糊了:Jscript和JavaScript是一样的吗?
ps;我刷新也没有出现错误,弱弱的问下:ie里咋看泄露啊?


打开任务管理器,看ie进程的内存。
7 楼 luolonghao 2008-12-26  
hite 写道
hite 写道

        <script language="JScript">



我又迷糊了:Jscript和JavaScript是一样的吗?
ps;我刷新也没有出现错误,弱弱的问下:ie里咋看泄露啊?

看了afcn0给的链接,我知道了上面的代码是作者拷过来!

看来lz不严谨啊,写的tag是JavaScript里面给的是jscript的代码.。
害的小白在这里犯迷糊。

后面的问题也知道了,就是下那个插件。可惜是个死链!


IE里没有javascript,只有Jscript。
6 楼 luolonghao 2008-12-26  
afcn0 写道
The IE team has been working hard to solve the problem. With the initial versions of Internet Explorer 6 practically all circular references between Javascript and DOM objects caused a memory leak. Avoiding leaks was not an easy task even because there are language constructs, like JavaScript closures, that make particularly difficult to track down those circular references.
IE小组及京开始研究此问题了,在最初的ie6版本中,任何的js引擎和DOM(COM)引擎间的循环引用都会泄漏,解决这个泄漏也不是那么容易,语言中比如说闭包都是地发现交叉循环引用困难重重。
Internet Explorer 7 improved the situation by releasing all references to JavaScript objects attached to the DOM tree when IE navigates away from that page. This allows the JavaScript engine to garbage collect those JavaScript objects and recover that memory. Almost the same changes were also shipped with the latest security updates of IE6. So, the previous code does not actually leak anymore.
ie7开始改进了局面,在用户从本用浏览器转移浏览路径时候,会释放绑定dom上的js对象,使得js的gc可以回收资源。所以你的代码已经不泄漏了
However, as some web developers have pointed out, those changes did not solve the problem entirely. IE still leaves behind anything not attached to the tree when the markup is tore down. The previous script, for example, would still leak if the LeakedDiv object was detached from the markup of the page calling:
然而,就是一些家伙指出的,问题远远不那么简单,ie的改进只是对于页面dom树上对象进行清除js引用的动作,对于使用removeChild删除的dom对象那些已经不在页面上但是却还是有js引用的ie7也是无能为力的
LeakedDiv.parentElement.removeChild(LeakedDiv);
所以记住这句万恶的remove,记住要
LeakedDiv.expandoProperty=null;
LeakedDiv.parentElement.removeChild(LeakedDiv);
才可以,其实即使这样使用Drip看还是有5个引用在LeakedDiv上,是不是泄漏不好说了,目前看来,ie上面较好的办法就是还是先别用removeChild了

另外,标题不好,ie是很成功的产品,没有他就没有你的工作


IE商业上成功不代表它的程序质量也好。
5 楼 hite 2008-12-26  
hite 写道

        <script language="JScript">



我又迷糊了:Jscript和JavaScript是一样的吗?
ps;我刷新也没有出现错误,弱弱的问下:ie里咋看泄露啊?

看了afcn0给的链接,我知道了上面的代码是作者拷过来!

看来lz不严谨啊,写的tag是JavaScript里面给的是jscript的代码.。
害的小白在这里犯迷糊。

后面的问题也知道了,就是下那个插件。可惜是个死链!
4 楼 hite 2008-12-26  

        <script language="JScript">



我又迷糊了:Jscript和JavaScript是一样的吗?
ps;我刷新也没有出现错误,弱弱的问下:ie里咋看泄露啊?
3 楼 afcn0 2008-12-25  
The IE team has been working hard to solve the problem. With the initial versions of Internet Explorer 6 practically all circular references between Javascript and DOM objects caused a memory leak. Avoiding leaks was not an easy task even because there are language constructs, like JavaScript closures, that make particularly difficult to track down those circular references.
IE小组及京开始研究此问题了,在最初的ie6版本中,任何的js引擎和DOM(COM)引擎间的循环引用都会泄漏,解决这个泄漏也不是那么容易,语言中比如说闭包都是地发现交叉循环引用困难重重。
Internet Explorer 7 improved the situation by releasing all references to JavaScript objects attached to the DOM tree when IE navigates away from that page. This allows the JavaScript engine to garbage collect those JavaScript objects and recover that memory. Almost the same changes were also shipped with the latest security updates of IE6. So, the previous code does not actually leak anymore.
ie7开始改进了局面,在用户从本用浏览器转移浏览路径时候,会释放绑定dom上的js对象,使得js的gc可以回收资源。所以你的代码已经不泄漏了
However, as some web developers have pointed out, those changes did not solve the problem entirely. IE still leaves behind anything not attached to the tree when the markup is tore down. The previous script, for example, would still leak if the LeakedDiv object was detached from the markup of the page calling:
然而,就是一些家伙指出的,问题远远不那么简单,ie的改进只是对于页面dom树上对象进行清除js引用的动作,对于使用removeChild删除的dom对象那些已经不在页面上但是却还是有js引用的ie7也是无能为力的
LeakedDiv.parentElement.removeChild(LeakedDiv);
所以记住这句万恶的remove,记住要
LeakedDiv.expandoProperty=null;
LeakedDiv.parentElement.removeChild(LeakedDiv);
才可以,其实即使这样使用Drip看还是有5个引用在LeakedDiv上,是不是泄漏不好说了,目前看来,ie上面较好的办法就是还是先别用removeChild了

另外,标题不好,ie是很成功的产品,没有他就没有你的工作
2 楼 luolonghao 2008-12-25  
javaeyebird 写道
IE7已经解决了


你在IE7重复刷新看看。
1 楼 javaeyebird 2008-12-25  
IE7已经解决了

相关推荐

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

    标题中的“IE内存泄露分析工具:sIEve/Drip”指的是两个专门用于检测和分析Internet Explorer浏览器内存泄漏问题的工具。sIEve和Drip是独立的工具,但它们都致力于帮助开发者定位和解决IE浏览器中的内存管理问题。 ...

    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浏览器中的特定使用场景下可能导致内存泄露的现象。 首先,我们要理解什么是内存泄露。...

    测试JavaScript在IE中的内存泄露

    在压缩包子文件的文件名"IE内存泄露测试"中,我们可以推测包含的资源可能是一个测试套件、指南、或者是一个实际的工具,用于帮助开发者在IE环境下进行内存泄露的模拟和检测。 要有效地测试和解决JavaScript在IE中的...

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

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

    IE 内存检测工具

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

    css样式和内存泄漏

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

    IE下的内存泄露问题解决方案(英文)

    ### IE内存泄露问题 #### 问题概述 在IE中,内存泄露主要是由于DOM元素与JavaScript对象之间的循环引用导致的。当一个DOM节点被引用,并且该引用又间接或直接引用回DOM节点时,即使这个DOM节点已经不再被需要,垃圾...

    IE内存监控sIEve-0.0.8

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

    Android webview 内存泄露的解决方法

    Android webview 内存泄露的解决方法 最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递...

    内存泄露检测工具

    内存泄露检测工具 内存泄露是指计算机程序在运行过程中,无法释放已经分配的内存空间,从而导致内存泄露的现象。内存泄露检测工具是用于检测和解决内存泄露问题的软件工具。以下是常用的内存泄露检测工具: 1. ...

    内存泄漏检测工具

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

    Drip IE内存监控工具

    **Drip IE内存监控工具详解** Drip IE内存监控工具是一款专为开发人员设计的实用软件,主要用于实时监测Internet Explorer浏览器的内存使用情况。在客户端应用程序的开发和调试过程中,理解并控制内存消耗是非常...

Global site tag (gtag.js) - Google Analytics