最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS類庫Bindows1.3中的內存釋放方式分析

 更新時間:2007年03月08日 00:00:00   作者:  
我在前段時間介紹過IE中JavaScript腳本Memory Leak的問題,后來在幾位熱心網友的討論下,基本認可了內存泄露的
    何謂"仔細"呢?就是說在有對象相互引用的時候,在對象丟棄時(不一定是頁面refresh)斷開彼此的引用鏈,特別是腳本中創(chuàng)建的對象和DHTML中的對象間的引用;清除HTML元素中的所有自定義屬性;清除所有HTML元素中的事件處理函數(shù)回調;對數(shù)組在廢棄時盡力delete掉內部元素。

    最重要的就是,盡量不創(chuàng)建冗余的腳本對象和DHTML元素對象,能通過修改屬性來達到的效果,即使麻煩一些也不重新生成新的對象。

    通過上面的步驟后,IE的內存使用增長率有所下降??墒侨匀徊荒芡耆珴M足對復雜的腳本運行的支持(接近Bindows這種復雜程度),體現(xiàn)在以下幾點:
    一、在腳本執(zhí)行過程中,內存使用量仍然是個只增不減的過程;
    二、使用最小化IE窗口方式強制IE進行GC,只能GC物理內存,對虛擬內存無效;
    三、頁面跳離(URL改變)原腳本執(zhí)行域,內存釋放量太少甚至不釋放;
    四、必須關閉IEXPLORE.EXE進程(即所有IE窗口),才能完全釋放IE所使用的內存。

    今天突然想起來久違的
Bindows,跑去一看,2月底release了一個1.3版本,于是開始運行主頁上面給的demo。效果不用說了,自己去看一下就行了,效率也相當?shù)母摺emo里還有一個類似多維數(shù)據(jù)顯示的GRID,居然還支持行和列的表頭都固定。炫已經是bindows亙古不變的特點了,在還沒有被迷昏前,我想起應該看看Bindows對內存的處理怎么樣?真是不看不知道,一看嚇一跳!

    打開www.bindows.net,我的IE內存使用量在(28PM+18VM)M左右,打開它的demo program。內存上到(38PM+35VM)M左右,然后再操作了幾下,內存到了(80PM+75VM)M左右。于是關掉demo窗口,IE釋放了大概15M左右內存,就停在(70PM+70VM)M的水平,在改變當前IE的URL,跳到了google,IE的內存使用量似乎還是沒有減少@_@。哈哈,Bindows也有Memory Leak~。真是小人得志,555... 過了一段短時間再看,IE的內存使用降到和開啟IE時差不多了:)。真實好消息,看來不能再冤枉IE了,于是開始跟蹤Bindows在onunload時的處理代碼。

    怎么能一下就跳到onunload的代碼里去呢?這里有個hack,先對IE按下Alt+V,u,b(需要uncheck IE options高級中的"禁止腳本調試",菜單View里才有U快捷鍵選項)。然后立即關閉Bindows的演示dome窗口,選擇VS.NET 2003作為Script調試器,就直接跳到onunload的入口處了。

    在管理IE中的腳本內存使用中,Bindows做的很非常周到的。復雜對象都實現(xiàn)了完備的dispose方法,用來作什么呢?在被調用時,首先切斷DHTML對象實例和腳本對象實例的引用鏈;清除全局cache變量中的數(shù)據(jù),使用delete關鍵字;使用attachEvent方式導入的事件處理函數(shù),需要detach;其它事件處理回調,使用賦null的方式清空;切斷腳本對象之間的parent或child關系引用鏈。

    這里有點使人迷惑的是,IE的GC的觸發(fā)是不確定的(目前知道的確定觸發(fā)就是最小化IE窗口),就是你做好了上述工作,在你的頁面剛onload時,內存也是不會立即釋放的。不過一段時間使用后,IE使用的內存會減少。所以就不用懷疑先前討論的方法了,并且除了"切斷腳本對象之間的parent或child關系引用鏈"這一點外,Bindows的dispose的原理和處理方法我前面討論基本一致。

    注:PM物理內存,VM虛擬內存。都可以在任務管理器中查看。

相關文章

  • HTML5 canvas 9繪制圖片實例詳解

    HTML5 canvas 9繪制圖片實例詳解

    HTML5 canvas 9繪制圖片
    2016-09-09
  • js 異步處理進度條

    js 異步處理進度條

    js 異步處理進度條的實現(xiàn)代碼,需要的朋友可以參考下。
    2010-04-04
  • 微信小程序彈窗禁止頁面滾動的實現(xiàn)代碼

    微信小程序彈窗禁止頁面滾動的實現(xiàn)代碼

    這篇文章主要介紹了微信小程序彈窗禁止頁面滾動的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 如何用JS有效的壓縮圖片

    如何用JS有效的壓縮圖片

    JavaScript操作壓縮圖片原理不難,已有成熟 API,然而在實際輸出壓縮后結果卻總有意外,有些圖片竟會越壓縮越大,加之終端(手機)類型眾多,有些手機壓縮圖片甚至變黑。本文將一步一步解決此類問題
    2021-05-05
  • 在實例中重學JavaScript事件循環(huán)

    在實例中重學JavaScript事件循環(huán)

    這篇文章主要介紹了在實例中重學JavaScript事件循環(huán),幫助大家更好的理解和學習JavaScript,感興趣的朋友可以了解下
    2020-12-12
  • 利用JS重寫Cognos右鍵菜單的實現(xiàn)代碼

    利用JS重寫Cognos右鍵菜單的實現(xiàn)代碼

    我寫了一個利用JS禁用Cognos右鍵菜單,下面的JS可以實現(xiàn)重寫Cognos的右鍵菜單。只要將下面的代碼拷到一個HTML項里即可。
    2010-04-04
  • 微信小程序計算器實例詳解

    微信小程序計算器實例詳解

    這篇文章主要為大家詳細介紹了微信小程序計算器實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 使用Promise進行異步處理的操作步驟

    使用Promise進行異步處理的操作步驟

    在JavaScript中,異步操作是非常常見的,如網絡請求、文件操作、定時任務等,Promise是一種用于管理異步操作的解決方案,它使得異步代碼變得更易讀、易于組合和錯誤處理更加集中,本文將詳細介紹如何使用Promise進行錯誤處理,需要的朋友可以參考下
    2025-03-03
  • 微信頁面倒計時代碼(解決safari不兼容date的問題)

    微信頁面倒計時代碼(解決safari不兼容date的問題)

    本文主要分享了微信頁面倒計時代碼(pc端),并在文章結尾分析了safari不兼容date的原因以及解決方法,具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12
  • 微信小程序實現(xiàn)橫向增長表格的方法

    微信小程序實現(xiàn)橫向增長表格的方法

    這篇文章主要介紹了微信小程序實現(xiàn)橫向增長表格的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07

最新評論

永登县| 镇江市| 定西市| 扶绥县| 汉沽区| 含山县| 江川县| 措勤县| 无锡市| 万全县| 广宗县| 隆尧县| 牟定县| 景德镇市| 吐鲁番市| 清涧县| 海盐县| 诏安县| 米脂县| 巴中市| 万山特区| 盐亭县| 蒙山县| 定边县| 仁化县| 山东省| 汽车| 永川市| 东乡族自治县| 沁阳市| 壶关县| 中宁县| 隆昌县| 湖口县| 三台县| 阜平县| 永清县| 天峨县| 兴国县| 聂拉木县| 松滋市|