龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

专家提醒 IE下JS编程中需注意内存释放问题(1)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
本文和大家重点讨论一下IE JS编程需注意的内存释放问题,在IE下的JS编程中,以下的编程方式都会造成即使关闭IE也无法释放内存的问题,下面分类给出。 IE JS编程需注意的内存释放问

本文和大家重点讨论一下IE JS编程需注意的内存释放问题,在IE下的JS编程中,以下的编程方式都会造成即使关闭IE也无法释放内存的问题,下面分类给出。

IE JS编程需注意的内存释放问题

在IE下的JS编程中,以下的编程方式都会造成即使关闭IE也无法释放内存的问题,下面分类给出。

1、给DOM对象添加的属性是一个对象的引用。

范例: 

  1. varMyObject={};  
  2. document.getElementById('myDiv').myProp=MyObject;  

解决方法:
在window.onunload事件中写上:document.getElementById('myDiv').myProp=null;

2、DOM对象与JS对象相互引用。

范例: 

  1. functionEncapsulator(element){  
  2. this.elementReference=element;  
  3. element.myProp=this;  
  4. }  
  5. newEncapsulator(document.getElementById('myDiv')); 

解决方法:
在onunload事件中写上:document.getElementById('myDiv').myProp=null;

3、给DOM对象用attachEvent绑定事件。

范例: 

  1. functiondoClick(){}  
  2. element.attachEvent("onclick",doClick); 

解决方法:
在onunload事件中写上:element.detachEvent('onclick',doClick);

4、从外到内执行appendChild。这时即使调用removeChild也无法释放。

范例: 

  1. varparentDiv=document.createElement("div");  
  2. varchildDiv=document.createElement("div");  
  3. document.body.appendChild(parentDiv);  
  4. parentDiv.appendChild(childDiv); 

解决方法:
从内到外执行appendChild: 

  1. varparentDiv=document.createElement("div");  
  2. varchildDiv=document.createElement("div");  
  3. parentDiv.appendChild(childDiv);  
  4. document.body.appendChild(parentDiv); 

5、反复重写同一个属性会造成内存大量占用(但关闭IE后内存会被释放)。

范例: 

  1. for(i=0;i<5000;i++){  
  2. hostElement.text="asdfasdfasdf";  

这种方式相当于定义了5000个属性!
解决方法:
其实没什么解决方法:就是编程的时候尽量避免出现这种情况。

精彩图集

赞助商链接