日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
關(guān)于IE的內(nèi)存泄漏與JavaScript內(nèi)存釋放

最近做一個公司的業(yè)務(wù)系統(tǒng),公司要求能盡可能的與c/s近似,也就是如c/s一樣,點擊文本框可以彈出此項目的相關(guān)內(nèi)容,進行選擇輸入。

我使用了彈出窗口,然后在子窗口雙擊選中項目,把選中的值返回給父窗體。在系統(tǒng)做完了之后,在客戶使用的過程,由于客戶使用的是512m的內(nèi)存配置,所以在打開了30--40個窗體之后,ie的虛擬內(nèi)存占用量達到近200m,從而使系統(tǒng)變慢,javascript的運行也變慢了。在google搜了一下之后,才知道可能是由于ie的內(nèi)存泄漏引起的。

使用任務(wù)管理器,打開一個彈出窗口,ie內(nèi)存就增加1-3m,然后關(guān)閉窗口,有時內(nèi)存并不釋放,有時才釋放幾十k??磥韱栴}出在了內(nèi)存釋放上面。

接著按內(nèi)存釋放這個思路,進行搜索查找方法,來進行解決這個問題。我找到一個javascript未公開的函數(shù)CollectGarbage,這個函數(shù)是用來進行內(nèi)存釋放的。我在所有的彈出窗口結(jié)束之前把所有的自己定義的javasctip的變量設(shè)置為null,并調(diào)用CollectGarbage函數(shù)。

javascript中把變量設(shè)為null,javascript并不會把內(nèi)存釋放,當(dāng)下次再次定義變量時,就會覆蓋此變量所在的內(nèi)存。如果不設(shè)為null,javascript再次定義變量時,會開辟一個新的內(nèi)存空間。

在使用以上處理之后,再次打開窗口,ie的內(nèi)存每次還是增加1-3m,但是在關(guān)閉窗口之后,則ie會釋放一定數(shù)量的內(nèi)存在500k至2m。起到了一定的作用。

由于我在頁面中使用了第三方的控件,第三方的控件中的javascript中的內(nèi)存是如何管理,就不是由我來控制的了。

1.javascript內(nèi)存釋放的方法示例

把所有上級函數(shù)的參數(shù)即使設(shè)為null,并使用CollectGarbage來釋放內(nèi)存。  

示例

 
 
 
  1.      

里面對于內(nèi)存釋放的規(guī)則(腳本層)已經(jīng)理解得很透了。  
  (每一層菜單分配?M的內(nèi)存.對著任務(wù)管理器才看到情況)  

注:
CollectGarbage()通常會在核心推出內(nèi)存,因就是IE或NS程序結(jié)束的時候才會調(diào)用.這樣才是安全的。

說明:
1)   如果你在另一個window中keep了該window中的object的reference,即使關(guān)閉該window,內(nèi)存也沒有釋放   
   
2)更糟糕的是,如果你keep的是一個DOM   object的reference,   關(guān)閉該object   所在window,   IE會crash,   報內(nèi)存錯誤(或者要求,重新啟動)  

【相關(guān)資訊】

  1. 不唐突的JavaScript的七條準則
  2. JavaScript中的Object到底是什么
  3. 痛陳Javascript的缺點
  4. Javascript實現(xiàn)的超強語法高亮引擎
  5. JavaScript如何給JavaScript文件傳遞參數(shù)

網(wǎng)站欄目:關(guān)于IE的內(nèi)存泄漏與JavaScript內(nèi)存釋放
路徑分享:http://www.dlmjj.cn/article/cogsdhj.html