IE的JScript解析器可能有Memory Leak

简介:
  在家过完了年,感觉精神很爽。明天大家可能都就上班了,新的一年开始了,希望大家新年新气象 。而其我已经发现一点点新年的灵感了哦~,我原来发现IE中的JScript解释器可能有的Memory Leak的问题,可老是早不到出问题的代码,今天一下就逮到了一个可以复现的case~~

    想当初我做那个无刷新的JScript TreeView控件时,硬是被折磨坏了 。IE进程IEXPLORE.EXE的内存使用量常常串到200M左右,搞得我的JScript代码运行狂慢,有的时候展开一个Node需要好几秒钟@_@。

    复现这个Bug的代码如下:
< html >
< head >
     < title >IE Memory Leak Bug </ title >
</ head >
< body >
< button  onclick ="GenerateObjects(this)" >Append Elements </ button >
< div  id ="container" ></ div >
     < script  language ="Javascript" >
function  GenerateObjects(elmt)
{
    
var  room  =  document.getElementById('container');
    
for  (  var  i = 0  ; i  <   1000  ;  ++ i )
    
{
         
var  obj  =   new  TestObject('__Object__'  +  i);
         room.appendChild(obj.Render(document));
    }
 
}


function  TestObject(name)
{
     
this .m_Name  =  name;
     
this .m_Description  =  '';
     
this .m_Element  =   null ;
     
     
this .toString  =   function ()
     
{
         
return  '[class TestObject]'; 
     }

}


function  TestObject.prototype.Render(doc)
{
     
var  span  =  doc.createElement('SPAN');
    *span.Object 
=   this ;
    *
this.m_Element = span;
     
     span.Name 
=   this .m_Description;
     span.innerText 
=   this .m_Name;
     span.style.display 
=  'block';
     
return  span;
}

</ script >
</ body >
</ html >

    运行上面的代码,不断的点击"Generate Elements"按钮,IEXPORE.EXE的内存使用量(PM+VM)持续的上涨。这时不管你点"Refresh"还点"Go"按钮,IE的内存使用量始终不会减少 。除非关掉IE在重新打开,内存才能被释放。

    问题出在上面示例代码中打" *"的那两句话上,只要注释掉任意一句,Refresh页面后,IEXPORE.EXE的内存使用量就会降到刚打开IE是那个水平上。

    有兴趣欢迎您测试一下这个例子,看看是不是会Memory Leak?


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
Web App开发 JSON JavaScript
解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
原文:解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象 之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象。
1603 0
Understanding IE’s New Exploit Mitigations: The Memory Protector and the Isolated Heap
http://securityintelligence.com/understanding-ies-new-exploit-mitigations-the-memory-protector-and-the-isolated-heap/#.
1156 0
|
Windows
IE对文档的解析模式及兼容性问题
深入研究这个问题源于最近制作的几个页面,交给前端后,发现在IE8下,对于JS动态控制的内容,页面高度不能够随着动态的调整。   仔细检查后发现问题在于 display:inline-block 这个属性。
947 0
|
10天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
35 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
70 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
57 0

推荐镜像

更多
下一篇
无影云桌面