ie下js記憶體釋放問題

來源:互聯網
上載者:User

程中,以下的編程方式都會造成即使關閉ie也無法釋放記憶體的問題,下面分類給出:

1、給dom對象添加的屬性是一個對象的引用。範例:
var myobject = {};
document.getelementbyid('mydiv').myprop = myobject;
解決方案:
在window.onunload事件中寫上: document.getelementbyid('mydiv').myprop = null;


2、dom對象與js對象相互引用。範例:
function encapsulator(element) {
  this.elementreference = element;
  element.myprop = this;
}
new  encapsulator(document.getelementbyid('mydiv'));
解決方案:
在onunload事件中寫上: document.getelementbyid('mydiv').myprop = null;


3、給dom對象用attachevent綁定事件。範例:
function doclick() {}
element.attachevent("onclick", doclick);
解決方案:
在onunload事件中寫上: element.detachevent('onclick', doclick);


4、從外到內執行appendchild。這時即使調用removechild也無法釋放。範例:
var parentdiv =  document.createelement("div");
var childdiv = document.createelement("div");
document.body.appendchild(parentdiv);
parentdiv.appendchild(childdiv);
解決方案:
從內到外執行appendchild:
var parentdiv =  document.createelement("div");
var childdiv = document.createelement("div");
parentdiv.appendchild(childdiv);
document.body.appendchild(parentdiv);


5、反覆重寫同一個屬性會造成記憶體大量佔用(但關閉ie後記憶體會被釋放)。範例:
for(i = 0; i < 5000; i++) {
  hostelement.text = "asdfasdfasdf";
}
這種方式相當於定義了5000個屬性!
解決方案:
其實沒什麼解決方案:p~~~就是編程的時候盡量避免出現這種情況咯~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.