• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    IEJS編程需注意的內(nèi)存釋放問題_javascript技巧

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 20:43:15
    文檔

    IEJS編程需注意的內(nèi)存釋放問題_javascript技巧

    IEJS編程需注意的內(nèi)存釋放問題_javascript技巧:1、給DOM對象添加的屬性是一個對象的引用。范例:var MyObject = {};document.getElementById('myDiv').myProp = MyObject;解決方法:在window.onunload事件中寫上: document.getElementById('myDiv').myProp =
    推薦度:
    導讀IEJS編程需注意的內(nèi)存釋放問題_javascript技巧:1、給DOM對象添加的屬性是一個對象的引用。范例:var MyObject = {};document.getElementById('myDiv').myProp = MyObject;解決方法:在window.onunload事件中寫上: document.getElementById('myDiv').myProp =

    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、從外到內(nèi)執(zhí)行appendChild。這時即使調(diào)用removeChild也無法釋放。范例:
    var parentDiv = document.createElement("div");
    var childDiv = document.createElement("div");
    document.body.appendChild(parentDiv);
    parentDiv.appendChild(childDiv);
    解決方法:
    從內(nèi)到外執(zhí)行appendChild:
    var parentDiv = document.createElement("div");
    var childDiv = document.createElement("div");
    parentDiv.appendChild(childDiv);
    document.body.appendChild(parentDiv);


    5、反復重寫同一個屬性會造成內(nèi)存大量占用(但關閉IE后內(nèi)存會被釋放)。范例:
    for(i = 0; i < 5000; i++) {
    hostElement.text = "asdfasdfasdf";
    }
    這種方式相當于定義了5000個屬性!
    解決方法:
    其實沒什么解決方法:P~~~就是編程的時候盡量避免出現(xiàn)這種情況咯~~


    說明:
    1、以上資料均來源于微軟官方的MSDN站點,鏈接地址:
    http://msdn.microsoft.com/librar ... e_leak_patterns.asp
    大家可以到上面這個地址中看到詳細的說明,包括范例和圖例都有。只是我英文不太好,看不太懂,如果我上述有失誤或有需要補充的地方請大家指出。

    2、對于第一條,事實上包括 element.onclick = funcRef 這種寫法也算在其中,因為這也是一個對對象的引用。在頁面onunload時應該釋放掉。

    3、對于第三條,在MSDN的英文說明中好像是說即使調(diào)用detachEvent也無法釋放內(nèi)存,因為在attachEvent的時候就已經(jīng)造成內(nèi)存“LEAK”了,不過detachEvent后情況還是會好一點。不知道是不是這樣,請英文好的親能夠指出。

    4、在實際編程中,這些內(nèi)存問題的實際影響并不大,尤其是給客戶使用時,客戶對此絕不會有察覺,然而這些問題對于程序員來說卻始終是個心病 --- 有這樣的BUG心里總會覺得不舒服吧?能解決則給與解決,這樣是最好的。事實上我在webfx.eae.net這樣頂級的JS源碼站點中,在它們的源碼里都會看到采用上述解決方式進行內(nèi)存的釋放管理。

    研究 jsvm 的時候,發(fā)現(xiàn) js.lang.System 里面定義了 gc() 方法

    System.gc = function ()
    {
      if (System.isIeBrowser())
      {
        CollectGarbage();
        setTimeout("CollectGarbage();", 1);
      }
    }

    CollectGarbage() 是ie特有的一個釋放內(nèi)存函數(shù)

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    IEJS編程需注意的內(nèi)存釋放問題_javascript技巧

    IEJS編程需注意的內(nèi)存釋放問題_javascript技巧:1、給DOM對象添加的屬性是一個對象的引用。范例:var MyObject = {};document.getElementById('myDiv').myProp = MyObject;解決方法:在window.onunload事件中寫上: document.getElementById('myDiv').myProp =
    推薦度:
    標簽: 內(nèi)存 IE js
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 日韩精品成人一区二区三区| 国产精品日日摸夜夜添夜夜添1国产精品va欧美精 | 欧美日韩精品久久久久| 国内精品久久久久影院免费| 少妇精品久久久一区二区三区 | 精品国精品无码自拍自在线| 精品久久国产一区二区三区香蕉| 91精品国产高清久久久久久io| 亚洲精品无码专区久久久| 久久国产精品波多野结衣AV| 国产成人精品综合久久久| 久久亚洲国产欧洲精品一| 国产精品免费观看调教网| 蜜臀久久99精品久久久久久小说| 日韩精品一二三区| 国产精品美女免费视频观看| 一级成人精品h| 久久精品男人影院| 国产精品高清视亚洲精品| 99精品国产在热久久无毒不卡| 乱精品一区字幕二区| 欧美精品亚洲精品日韩传电影| 中文成人无字幕乱码精品区| 日韩精品无码永久免费网站| 欧美人与性动交α欧美精品成人色XXXX视频| 国产精品免费一区二区三区| 成人免费精品网站在线观看影片| 四虎永久在线精品国产免费| 精品一区二区三区在线视频| 69久久精品无码一区二区| 国产精品99久久免费观看| 国内精品久久久久伊人av| 国产乱人伦偷精品视频免下载 | 久久国产免费观看精品3| 久久棈精品久久久久久噜噜| 久久久久久夜精品精品免费啦| 蜜国产精品jk白丝AV网站 | 国产人妖乱国产精品人妖| 精品久久久久久无码专区 | 国产成人精品日本亚洲专区| 国产精品v欧美精品v日本精|