天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

我在前段時間介紹過IE中JavaScript腳本Memory Leak的問題,后來在幾位熱心網(wǎng)友的討論下,基本認可了內存泄露的事實和原理。在小規(guī)模的測試case下,本來都達到了基本避免IE中腳本的ML問題。可是近來發(fā)現(xiàn)只以"仔細"來防止IE中腳本ML似乎是非常困難的一件事情,難道開始的討論有錯誤嗎?

    何謂"仔細"呢?就是說在有對象相互引用的時候,在對象丟棄時(不一定是頁面refresh)斷開彼此的引用鏈,特別是腳本中創(chuàng)建的對象和DHTML中的對象間的引用;清除HTML元素中的所有自定義屬性;清除所有HTML元素中的事件處理函數(shù)回調;對數(shù)組在廢棄時盡力delete掉內部元素。

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

    通過上面的步驟后,IE的內存使用增長率有所下降。可是仍然不能完全滿足對復雜的腳本運行的支持(接近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,居然還支持行和列的表頭都固定。炫已經(jīng)是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虛擬內存。都可以在任務管理器中查看。

JavaScript技術JS類庫Bindows1.3中的內存釋放方式分析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 在线亚洲国产日韩欧洲专区 | 成人动漫百度影音 | 国产精品无码久久久久不卡 | 国产最新进精品视频 | 免费麻豆国产黄网站在线观看 | 蜜柚视频高清在线 | 久久er99热精品一区二区 | 亚洲看片无码免费视频 | 国产成人99久久亚洲综合精品 | 成年人视频在线观看免费 | 国产老师开裆丝袜喷水漫画 | 国产精品久久久久影院 | 国产一区亚洲 | 美国大臿蕉香蕉大视频 | 国产在线精品亚洲第一区 | 黑色丝袜美腿美女被躁翻了 | 久久久久久久网 | 草柳最新地址 | 国产精品女上位好爽在线短片 | 一区三区不卡高清影视 | 98国产精品人妻无码免费 | 俄罗斯6一12呦女精品 | 日本久久不射 | 日韩精品一区二区中文 | 美女网站免费久久久久久久 | 神马老子影院午夜伦 | 色欲AV精品人妻一二三区 | 久久人妻少妇嫩草AV蜜桃99 | 精品午夜寂寞影院在线观看 | 久久精品视频在线看 | 亚洲嫩草影院久久精品 | 国产精选视频在线观看 | 亚洲精品日韩在线观看视频 | 无码区国产区在线播放 | 老师在讲桌下边h边讲课 | 一本道无码字幕在线看 | 2023极品少妇XXXO露脸 | 成年人视频在线免费看 | YELLOW高清在线观看2019 | 国产日韩精品一区二区三区在线 | XXX国产麻豆HD真实乱 |