IE記憶體洩露小結

2021-04-14 23:05:30 字數 1317 閱讀 2752

師姐安排我做乙個很簡單,但是很麻煩的工作,檢測ie記憶體洩露,記憶體洩露的方式不是很多,但是要真正查詢到錯誤源不是很容易。

檢測記憶體洩露的時候,使用的工具是drip0.5,在檢測洩露的時候,有個很令人氣憤的事情,在我的t41上檢測不出來,但在t61上報

了好多錯,令我很尷尬!

經過檢測,現總結經驗如下:

1:最容易檢查的錯誤是類似於new了乙個物件後,未delete該物件。js中最多出現的是,createlement()

如:var toolflag=document.createelement("img");

toolflag.id="toolflag";

toolflag.src="images/move.gif";

toolflag.style.position="absolute";

toolflag.style.zindex="1000";

toolflag.style.display = "block";

toolflag.style.left = "-100px";

toolflag.style.top  = "-100px";

//釋放資源

toolflag = null;

//如果不釋放的話,drip就會檢測到洩露

2:如果new的物件是乙個全域性的變數,那釋放的時候將很複雜

如:window.arr = new array();

這個window.arr可能很多地方使用,而且可能在程式執行期間,還有用,所以我自己認為最好實在頁面退出前釋放,

在new物件的地方新增乙個釋放函式,然後可以在主框架中新增 onunload 函式來呼叫那個釋放的函式,

3:ajax中新建的請求物件最好在請求完後釋放,如果不釋放的話,每次ajax請求都會重新生成乙個物件,記憶體將會增長很快。

當然釋放物件必須是在該ajax完成後(無論成功或者失敗)

如://add by xcl

function ajaxrequest(method,url,data,callback)

//釋放ajax物件,

IE8中的記憶體洩露

最近開發的時候對頁面使用了定時的區域性更新,結果在ie6,7和firefox下,一切正常,而在ie8下過上幾個小時就瀏覽器就崩潰了,顯示是記憶體溢位,我以為是 寫的不好導致記憶體洩露,但是ie6,7又正常,調查了一下,原來這是ie8的bug。size large 問題點 size 在ie8中,生成特...

IE事件註冊相關的記憶體洩露總結

經過一上午的艱苦試驗驗證,得出如下結論 1 將元素傳入閉包,並在其中註冊事件,這是導致記憶體洩露的根源之一 另一必要條件是 元素必須脫離文件樹,亦即類似執行了語句 elm.parentnode.removechild elm 2 解決方式 避免上述情形 在window.onunload中取消事件註冊...

記憶體洩露檢測

c 中檢測記憶體洩漏可以引入系統定義的巨集來檢視,內存在哪個位置洩漏 檔案開始處加入下列定義 define crtdbg map alloc include include 程式退出時加入以下函式 crtdumpmemoryleaks 如果有洩漏會顯示 記憶體洩漏是程式設計中常常見到的乙個問題,我所...